Numpy索引
#就像python的list一样,numpy也可以进行索引
import numpy as np
A = np.arange(3,15).reshape(3,4)
#print(A)
#print(A[3]) #索引从0开始。一维都输出以个数
print(A[2]) # 二维的话就输出一行
print(A[1][1]) # 第几行第几列
print(A[2][1])
print(A[2,1]) #第二种方式
#与list一样,:可以代表所有
print(A[2,:])
print(A[1,1:2]) #放回的是list
#输出
[11 12 13 14]
8
12
12
[11 12 13 14]
[8]
由于有上面的特性,因此可以使用for循环迭代
#迭代行
for row in A:
print(row)
#迭代列
for col in A.T:
print(col)
#输出
[3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]
[ 6 10 14]
#迭代一个一个数
print(A.flatten())
#迭代一个一个数
for item in A.flat:
print(item)
#输出
[ 3 4 5 6 7 8 9 10 11 12 13 14]
3
4
5
...
Numpy array的合并
import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
print(np.vstack((A,B))) #上下合并(垂直合并) vertical
print(np.hstack((A,B))) #左右合并(水平合并) horizontal
#注意,不能把一个横向序列用 转置的方式变成纵向的矩阵
print(A[np.newaxis,:]) #加了一个维度。
A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
print(np.hstack((A,B)))
print(np.hstack((A,A,B))) #可以进行多个合并
C= np.concatenate((A,A,B,A),axis=1) #按列合并
print(C)
#输出
[[1 1 1]
[2 2 2]]
[1 1 1 2 2 2]
[[1 1 1]]
[[1 2]
[1 2]
[1 2]]
[[1 1 2]
[1 1 2]
[1 1 2]]
[[1 1 2 1]
[1 1 2 1]
[1 1 2 1]]
Numpy的分割
import numpy as np
A =np.arange(12).reshape(3,4)
print(A)
#纵向分割
print(np.split(A,2,axis=1)) # axis=1 对列分割
#横向分割
print(np.split(A,3,axis=0))
#只能进行相等的分割不能进行不等的分割。如何实现不等的分割?
print(np.array_split(A,3,axis=1))
# 第二种分割函数
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],
[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]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[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]])]
copy & deep copy¶
import numpy as np
a = np.arange(4)
print(a)
b=a
c=a
d=b
a[0]=11
print(a)
b is a #返回True
print(b)
d[1:3]=[22,33]
print(a)
#输出
[0 1 2 3]
[11 1 2 3]
[11 1 2 3]
[11 22 33 3]
import numpy as np
a = np.arange(4)
print(a)
b=a.copy() #deep copy
b[2]=66
print(a,b)
#输出
[0 1 2 3]
[0 1 2 3] [ 0 1 66 3] #此时,a已经不变了