import numpy as np
array = np.array([[1,2,3],
[2,3,4]])
print("number of dim: ", array.ndim)
print("shape: ", array.shape)
print("size: ", array.size) # 有几个元素
number of dim: 2
shape: (2, 3)
size: 6
a = np.array([3, 4, 5], dtype = np.float) #np.int64/32等
print(a.dtype)
float64
a = np.zeros((3,4)) # 三行四列0矩阵
a = np.ones((2, 3))
a = np.empty((3, 4))
print(a)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
a = np.arange(10, 20 ,2) # 最后是步长
print(a)
[10 12 14 16 18]
# 将(1,12)变成(3,4)
a = np.arange(12).reshape(3,4)
print(a)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
# 1到10的5个数,自动算步长
a = np.linspace(1,10,5)
print(a)
[ 1. 3.25 5.5 7.75 10. ]
计算
import numpy as np
a = np.array([10, 20, 30, 40])
b = np.arange(4)
c = b**2 # 平方
d = np.sin(a) # 求sin弧度制
print(b<3)
[ True True True False]
# 矩阵乘法
a = np.array([[1, 1],
[0, 1]])
b = np.arange(4).reshape((2,2))
c = a*b # 点乘
c_dot = a.dot(b)
c_dot_2 = np.dot(a, b)
print(c)
print(c_dot)
[[0 1]
[0 3]]
[[2 4]
[2 3]]
a = np.random.random((2, 4))
print(a) # 随机0-1的数
print("求和:{}\n".format(np.sum(a)))
# axis=0 求每列的和,axis=1求每行和,最大最小均值同理
print(np.sum(a, axis=0))
print(np.min(a))
print(np.max(a))
print(np.mean(a, axis = 0))
[[0.44767692 0.60824735 0.30681651 0.97058108]
[0.62467156 0.77957734 0.99178724 0.47179949]]
求和:5.20115749801983
[1.07234848 1.38782469 1.29860376 1.44238057]
0.3068165125193101
0.9917872427118448
[0.53617424 0.69391235 0.64930188 0.72119029]
import numpy as np
A = np.arange(2, 14).reshape((3, 4))
print(A)
print(np.argmin(A)) #最小值的索引
print(np.argmax(A))
# 两种算均值方法
print(np.mean(A))
print(A.mean())
# 中位数
print(np.median(A))
# 累加
print(np.cumsum(A))
# 累差
print(np.diff(A))
# 输出非零数的索引,两个array分别是行, 列
print(np.nonzero(A))
# 排序
print(np.sort(A))
# 转置
print(np.transpose(A))
print(A.T)
# 小于5的值变成5,大于9的数变9,之间的数不变
print(np.clip(A, 5, 9))
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
0
11
7.5
7.5
7.5
[ 2 5 9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
[1 1 1]
[1 1 1]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
[[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]
索引
import numpy as np
A = np.arange(3, 15)
print(A)
print(A[3]) # 一维数组可以直接索引值
[ 3 4 5 6 7 8 9 10 11 12 13 14]
6
B = np.arange(3, 15).reshape(3, 4)
print(B)
print(B[2]) # 二维会索引行
print(B[1][1]) # 索引元素
print(B[1, 1])
print(B[1,:]) # 第1行的所有数
print(B[:,2]) # 第二列所有数
print(B[1, 2:4])
[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
[11 12 13 14]
8
8
[ 7 8 9 10]
[ 5 9 13]
[ 9 10]
# 按行迭代
for row in B:
print(row)
# 按列迭代
for col in B.T:
print(col)
# 迭代元素
print(B.flatten()) # 先变成一维
for ele in B.flatten():
print(ele)
[3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]
[ 6 10 14]
[ 3 4 5 6 7 8 9 10 11 12 13 14]
3
4
5
6
7
8
9
10
11
12
13
14
array合并
import numpy as np
A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
C = np.vstack((A, B)) # 上下合并
D = np.hstack((A, B)) # 左右合并
print(A.shape,C.shape, D.shape)
(3,) (2, 3) (6,)
[1 1 1]
(3,)意思是只有3个数的序列
print(A.T) # 转置不能把他变成竖向的
#
print(A[np.newaxis,:].shape) # 行上加了个维度
print(A[:, np.newaxis].shape)
A[:, np.newaxis]
[1 1 1]
(1, 3)
(3, 1)
array([[1],
[1],
[1]])
print( A.reshape(-1,1) ) # 可以直接reshape
print( A.reshape(3,1) )
[[1]
[1]
[1]]
[[1]
[1]
[1]]
A = np.array([1, 1, 1]).reshape(-1,1)
B = np.array([2, 2, 2]).reshape(-1,1)
# axis = 0纵向合并,axis = 1横向合并
print( np.concatenate((A, B, A, B), axis = 0) )
print( np.concatenate((A, B, A, B), axis = 1) )
[[1]
[1]
[1]
[2]
[2]
[2]
[1]
[1]
[1]
[2]
[2]
[2]]
[[1 2 1 2]
[1 2 1 2]
[1 2 1 2]]
array分割
import numpy as np
A = np.arange(12).reshape(3, 4)
print(A)
print(np.split(A, 2, axis=1)) # 横向分成2块排着,这样理解
# axis=0列操作,axis=1行操作
print(np.split(A, 3, axis=0))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
# 不等分割
print(np.array_split(A, 2, axis=0))
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
# 纵向和横向分割比较简便的方法
print(A)
print(np.vsplit(A, 3))
print(np.hsplit(A, 2))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
array的赋值
import numpy as np
a = np.array([0, 1, 2, 3])
b = a
c = a
d = b
a[0] =11
b
array([11, 1, 2, 3])
b就是a,改b也会影响a
b = a.copy() # 深拷贝,改a不会影响b
a[3] = 4
b
array([11, 1, 2, 3])