1.创建数组
import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.ndim) #查看维数
print(a.dtype) #查看数据类型
print(a.reshape((4,1))) #改变形状
b = np.arange(1,10,2) #创建连续数组
print(b)
Output:[1 3 5 7 9]
#包【0,1】分成11份
c = np.linspace(0,1,11)
print(c)
OutPut:[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]
# 创建全1矩阵
d = np.ones((3,2))
print(d)
Output:
[[1. 1.]
[1. 1.]
[1. 1.]]
同理还有全0矩阵np.zeros(),
还有对角阵np.eye().注:此函数只有一个参数。
e = np.random.randn(6,4) #创建一6X4的随机数组
print(e)
2.numpy提供了灵活的索引机制来访问数组内的元素
f = np.arange(10)
print(f)
[0 1 2 3 4 5 6 7 8 9]
print(f[0],f[-1])
0 9
print(f[:4]) #半开闭区间,不包含最后一个元素
[0 1 2 3]
print(f[3:7])
[3 4 5 6]
print(f[3:])
[3 4 5 6 7 8 9]
print(f[2:8:2])
[2 4 6]
print(f[2::2])
[2 4 6 8]
print(f[::3])
[0 3 6 9]
3.二维数组的索引
a = np.arange(0,51,10).reshape(6,1)+np.arange(10)
print(a)
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]]
print(a[0,1],a[5,9])
1 59
print(a[0,0:6])
[0 1 2 3 4 5]
print(a[:3,6:])
[[ 6 7 8 9]
[16 17 18 19]
[26 27 28 29]]
print(a[2,:])
[20 21 22 23 24 25 26 27 28 29]
print(a[:,1])
[ 1 11 21 31 41 51]
print(a[:,::2])
[[ 0 2 4 6 8]
[10 12 14 16 18]
[20 22 24 26 28]
[30 32 34 36 38]
[40 42 44 46 48]
[50 52 54 56 58]]
print(a[::3,:])
[[ 0 1 2 3 4 5 6 7 8 9]
[30 31 32 33 34 35 36 37 38 39]]
print(a[::2,::3])
[[ 0 3 6 9]
[20 23 26 29]
[40 43 46 49]]
4.另外一种索引方法是通过Bool数组
a = np.random.randint(10,20,6)
print(a)
print(a%2)
print(a[a%2 == 0])
[18 19 10 12 18 11]
[0 1 0 0 0 1]
[18 10 12 18]
5.Numpy运算
a = np.arange(6)
print(a)
print(a+5)
[0 1 2 3 4 5]
[ 5 6 7 8 9 10]
b = np.random.randint(1,5,20).reshape(4,5)
print(b)
[[1 1 2 2 3]
[4 3 1 2 4]
[3 3 4 1 1]
[4 4 1 2 2]]
b = np.random.random_integers(0,1,(5,3))
print(b)
[[1 0 0]
[1 1 0]
[0 1 1]
[0 0 1]
[0 1 1]]
c = np.random.random_integers(1,1,(5,3))
print(c)
[[1 1 1]
[1 1 1]
[1 1 1]
[1 1 1]
[1 1 1]]
print(b*c) #注意:这里是数组想成,即逐个元素相乘,不是内积
[[1 0 0]
[1 1 0]
[0 1 1]
[0 0 1]
[0 1 1]]
print(np.dot(b,c))
[[2 2 2 2 2]
[3 3 3 3 3]
[2 2 2 2 2]
[2 2 2 2 2]
[3 3 3 3 3]]
注:如果在运算时,数组维数不匹配,Numpy会使用Boardcost机制来匹配,如果匹配不成功,则报错。
6.数组比较大小
a = np.array([1,2,3,4])
b = np.array([2,3,3,5])
print(a==b)
[False False True False]
print((a==b).all(),(a==b).any())
False True
7.Numpy还提供了一些数组运算的内置函数:
np.cos()
np.exp()
np.sqrt()
a.sum()
a.mean()
a.std()
a.min()
a.max()
a.argmax() #返回最大元素所在的索引
a.argmin()
2018年4月26日
于杭