Numpy 基本介绍

Numpy 是 Python 中用于科学计算最基本的一个包,它除了提供了多维度数组对象以外,还提供了大象的派生类:矩阵等在 Numpy 中提供了许多针对数组对象快速操作的历程,例如:数学基本运算、逻辑处理、尺寸转换、排序、旋转、旋转、线性代数等运算Numpy 的核心就是 ​​ndarray​​​ 对象,封装了具有相同数据类型的 n 维数组,编译许多操作来提高性能。相对于 Python 标准序列数据类型(​​list​​​ 、​​tuple​​ 等);  Numpy 数组本身具有的一些特性:


  • Numpy 数组创建后大小不可变化;但 Python 中的​​list​​​可以 通过​​append​​​ 和 ​​remove​​ 函数实现动态改变;
  • 数组中的元素数据类型必须一致,而 ​​list​​中的元素可以为整数、也可以是字符串,或者字典;
  • 对于数据运算,操作来说 Numpy array 运算更快,数据量越大这个优越性越显著;
  • 得益于对于大量数据较快的运算能力,数学家和科学家通常会把数据转化为数组,操作完之后再转化为自己的目标数据类型。

Numpy 数组的基本操作

通常使用 numpy 时,为了方面通常会用 np 名称来代替

2.1,np.array — 把数据转化为数组

Numpy 的核心就是数组类型,在所有操作之前首先要做的就是数组类型转换,类型转化前提保证数类型为序列类型( 例如 ​​list​​)

>>> a = [1,2,3,4,5,6]
>>> import numpy as np
>>> arr1 = np.array(a)
>>> arr1
array([1, 2, 3, 4, 5, 6])
>>> a = [1,2,3,4,5,6]

2.2,array.reshape(a,b,c) — 改变数组尺寸

​reshape​​函数 是用来把数组转化为特定尺寸,如果需要的的数组是二维的,a,b两个参数即可

>>> arr1 = [1,2,3,4,5,6,7,8]
>>> arr1 = np.array(arr1)
>>> arr1
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> arr1.reshape(2,4)#二维
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> arr1.reshape(1,2,4)#三维
array([[[1, 2, 3, 4],
[5, 6, 7, 8]]])
>>> arr1 = [1,2,3,4,5,6,7,8]
[5, 6, 7, 8]]])

2.3,array.ndim — 返回数组维度

>>> arr1
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> arr1.ndim
1
>>> arr1.reshape(2,4).ndim
2
>>> arr1.reshape(1,2,4).ndim

2.4,array.shape — 返回数组的尺寸

​shape​​ 函数返回的是数组的尺寸,也就是每个维度所拥有的元素个数;

>>> arr1
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> arr1.shape
(8,)
>>> arr1.reshape(2,4).shape
(2, 4)
>>> arr1.reshape(1,2,4).shape
(1, 2, 4)
>>> arr1
(1, 2, 4)

2.5,array.size — 返回数组中元素的数量

>>> arr1
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> arr1.size
8
>>> arr1.reshape(2,4).size
8
>>> arr1
8

2.6,np.arange(a,b,c) — 生成以 a 与 b之间以c为间隔的数组元素:

在 Python 语法中有一个 ​​range()​​​ 函数,​​arange​​ 函数与它功能一样,区别就是一个返回列表,一个返回数组;当没有参数 c 时,生成的数据间隔默认为 1;

>>> arr1 = np.arange(1,9)
>>> arr1
array([1, 2, 3, 4, 5, 6, 7, 8])

>>> aarr1 = np.arange(1,9,2)
>>> aarr1
array([1, 3, 5, 7])
>>> arr1 = np.arange(1,9)
array([1, 3, 5, 7])

2.7,np.linspace(a,b,num) — 生成 a 与 b 之间数量为 num 的数组

​linspace​​​ 与​​arange​​​ 两个函数功能都是把两个数之间数作为数组的元素,但两者之间较大的区别是:​​arange​​​ 无法控制生成数组的元素个数,尤其是元素类型为浮点型时,而​​linspace​​​可以通过设置 ​​num​​ 很方便地地控制。

>>> arr1 = np.arange(2,8,0.6)
>>> arr1
array([2. , 2.6, 3.2, 3.8, 4.4, 5. , 5.6, 6.2, 6.8, 7.4])
>>> arr1.size
10
>>> arr2 = np.linspace(2,8,8)#利用linspace生成2到8的8个数据,自行分配
>>> arr2
array([2. , 2.85714286, 3.71428571, 4.57142857, 5.42857143,
6.28571429, 7.14285714, 8. ])
>>> arr1 = np.arange(2,8,0.6)
>>> arr1 =np.arange(1,8,1)

可以利用 ​​astype​​ 函数把数组中的元素类型进行强制转换;

>>> arr1
array([1, 2, 3, 4, 5, 6, 7])
>>> arr1.dtype
dtype('int32')
>>> arr2 =arr1.astype('float64')#格式转换
>>> arr2.dtype
dtype('float64')
>>> arr1
>>> arr2.dtype