一、认识numpy数组对象
ndarray是numpy中的底层数据结构,在numpy中如果对数组执行一个四则运算,就相当于要对其每一元素做相同的操作;如果数组操作的对象和它的规模一样,则其结果就是对应位置进行计算。
二、创建numpy数组
1)array()函数
data=np.array([1,2,3]) #一维数组
data2=np.array([[1, 2, 3], [4, 5, 6]]) #二维数组
2)zeros()函数
np.zeros((3, 4))
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
3)ones()函数
np.ones((3,4)
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
4)arange()函数
np.arange(1,10)
array([1,2,3,4,5,6,,7,8,9])
5) empty()函数
np.empty((5, 2))
array([[-2.00000000e+000, -2.00390463e+000],
[ 2.37663529e-312, 2.56761491e-312],
[ 8.48798317e-313, 9.33678148e-313],
[ 8.70018275e-313, 2.12199581e-314],
[ 0.00000000e+000, 6.95335581e-309]])
三、ndarray对象的数据类型
1)如果希望获取数据类型的名称,则需要访问name属性进行获取。
data2=np.array([[1, 2, 3], [4, 5, 6]])
data2.dtype.name
2)numpy中常用的数据类型如图
四、数组运算
1)矢量化运算
数组在进行矢量化运算时,要求数组的形状是相等的。
2)广播机制
当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一,然后再进行矢量化运算
3)数组与标量运算
五、ndarray的索引和切片
1)一维数组和python列表结构差不多
2)二维数组的索引和切片
arr2d = np.array([[1, 2, 3], [4, 5, 6],[7, 8, 9]])
arr2d[1]
array([4, 5, 6])
arr2d[0, 1]
2
3) 花式索引
花式索引是NumPy的一个术语,是指用整数数组或列表进行索引,然后再将数组或列表中的每个元素作为下标进行取值。
arr = np.empty((8,4))
for i in range(8):
arr[i]=i
arr
array([[ 0., 0., 0., 0.],
[ 1., 1., 1., 1.],
[ 2., 2., 2., 2.],
...,
[ 5., 5., 5., 5.],
[ 6., 6., 6., 6.],
[ 7., 7., 7., 7.]])
arr[[4,3,0,6]]
array([[ 4., 4., 4., 4.],
[ 3., 3., 3., 3.],
[ 0., 0., 0., 0.],
[ 6., 6., 6., 6.]])
4)华尔型索引
布尔型索引指的是将一个布尔数组作为数组索引,返回的数据是布尔数组中True对应位置的值。
arr3 = np.array([1,2,3,4,5])
char= np.array(['A','B','A','C','D'])
char == 'A'
#array([True,False,True,False,False])
arr3[char == 'A']
#array([1,3])
六、Numpy通用函数
通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数
1、常用的一元通用函数
2、常用的二元通用函数