numpy基础运算
sum(), min(), max()的使用
import numpy as np
a=np.random.random((2,4))
print(a)
#生成2行4列的矩阵,每一个元素都是从0到1之间的随机数
np.sum(a) # 对所有元素求和
np.min(a) #求所有元素最小值
np.max(a) #求所以元素最大值
如果需要按照行和列进行查找运算,则需要对axis属性进行赋值。
axis=0 按列查找 axis=1 按行查找
np.sum(a,axis=1) #按行求和
np.min(a,axis=0) #按列求最小值
np.max(a,axis=1) #按行求最大值
argmin() 和argmax() 的使用
import numpy as np
A=np.arange(2,14).reshape(3,4)
#array([[2,3,4,5],[6,7,8,9],[10,11,12,13]])
print(np.argmin(A)) #最小元素的索引 0
print(np.argmax(A)) #最大元素的索引 11
#求整个矩阵的平均值
print(np.mean(A)) #7.5
print(np.average(A)) #7.5
#或者可以写作
print(A.mean())
#求解中位数的函数
print(A.median()) #7.5
#累加函数cumsum()
print(np.cumsum(A))
#[2 5 9 14 20 27 35 44 54 65 77 90]
#累差运算函数diff()
print(np.diff(A))
#[[1 1 1]
[1 1 1]
[1 1 1]]
#计算每一行中后一项与前一项之差
nonzero()函数:将所有非零元素的行和列的坐标分割重构成两个矩阵
print(np.nonzero(A))
#(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
排序函数sort() :仅对每一行进行从小到大的操作
import numpy as np
A=np.arange(14,2,-1).reshape(3,4)
#[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
print(np.sort(A))
#[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]
矩阵的转置
print(np.transpose(A))
print(A.T)
clip()函数: 格式为clip(Array,Array_min,Array_max),Array指的是将要被执行的矩阵,后面的最小值最大值用于让函数判断矩阵元素中是否有超出最大最小值范围的数,如果有,则把相应的元素转变为最大值或者最小值。
import numpy as np
A=np.arange(14,2,-1).reshape(3,4)
#[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
print(np.clip(A,4,10))
#[[10 10 10 10]
[10 9 8 7]
[ 6 5 4 4]]
numpy的索引
一维索引: A[i]
二维索引: A[x][y] #x表示行,y表示列。 A[X,Y] A[x,1:3] (相应的行和列可以进行切片操作)
打印
for row in A
print(row)
#按行打印
for column in A.T
print(column)
#按行打印,原矩阵转置之后按行打印,即为原矩阵的按列输出
#迭代输出
import numpy as np
A=np.arange(3,15).reshape((3,4))
print(A.flatten())
#[ 3 4 5 6 7 8 9 10 11 12 13 14]
#flatten是一个展开性质的函数
for item in A.flat
print(item)
#3
#4
....
#14
#falt为迭代器,本身为object属性
numpy的合并
#np.vstack 上下合并
import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
print(np.vstack((A,B)))
#[[1 1 1]
[2 2 2]]
#np.hstack() 左右合并
D=np.hstack((A,B))
print(D)
#[1 1 1 2 2 2]
#np.newaxis()
print(A[np.newaxis,:])
#[[1 1 1]]
print(A[:,np.newaxis])
#[[1]
[1]
[1]]
#实例
import numpy as np
A=np.array([1,1,1])[:,np.newaxis]
B=np.array([2,2,2])[:,np.newaxis]
C=np.vstack((A,B))
D=np.hstack((A,B))
print(C)
#[[1]
[1]
[1]
[2]
[2]
[2]]
print(D)
#[[1 2]
[1 2]
[1 2]]
#np.concatenate()
C=np.concatenate((A,B,B,A),axis=0)
D=np.concatenate((A,B,B,A),axis=1)
#axis=0时,上下合并;axis=1时,左右合并。
numpy array分割
#创建数据
import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
#[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
#纵向分割
print(np.split(A,2,axis=1))
#[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
#横向分割
print(np.split(A,3,axis=0))
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
#不等量对分 np.array_split()
print(np.array_split(A,3,axis=1))
#[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
#其他分割方式np.vsplit()与np.hsplit()
print(np.vsplit(A,3)) #等同于print(np.split(A,3),axis=0)
print(np.hsplit(A,2)) #等同于print(np.split(A,2),axis=1)
Numpy copy &deep copy
=的赋值方法带有关联性
copy()的赋值方法没有关联性 b=a.copy()