操作数组和矩阵
import numpy as np
a = np.array([1,2,3])#创建加上np.后面加上其他函数[1 2 3]
a = np.array([1,2,3],dtype=np.int32)
a = np.array([[1,2,3],[2,2,2]])#二维
a = np.zeros((2,3))#全零矩阵
a = np.empty((2,3))#同上
a = np.ones((2,3))#全一矩阵
a = np.arange(1,10,3)#步长输出[1 4 7]不包括10
print(a.ndim)#维数
print(a.shape)#输出(行,列)
print(a.size)#输出总长度
b = np.arange(4)#自然数等价于(0,4,1)
基本操作
c=a-b#[0. 1. 2.]
c=a*b#对应元素相乘 结果还是矩阵
c = a.dot(b)#a矩阵与B矩阵的点乘 结果是常数
c=a**2#对应位置的平方 结果还是矩阵
二维操作
a = np.array([[1,2],[2,3]])
b = np.arange(4).reshape((2,2))#矩阵为[[0 1],[2,3]]
c=a.dot(b)#还是矩阵([4 7] [8 16]) 属于a 的函数
特殊操作 属于np的函数
a= np.random.random((2,4))#随机数组 2*4 np.数值.行列
a_sum=np.sum(a)#矩阵的所有元素的和
print(np.min(a))#[[1 2][3 4]] 为1 结果是一个数字 不是矩阵
print(np.mean(a))#求矩阵元素的平均值 如上:为2.0
print(np.sum(a,axis=0))#按列进行求和 结果为一维矩阵 如上[3 5]
print(np.sum(a,axis=1))#按行进行求和 结果为一维矩阵 如上[3 5]
A=np.arange(2,14).reshape(3,4)
A= np.array([[6,2],[5,3]])
print(np.argmax(A))#最大值元素的索引 元素 是不管几维的单个数字
print(np.argmin(A))#最小值元素的索引
平均值
np.mean(A)#np方法
np.average(A)
A.mean()#矩阵方法
np.median(A)#中位数
np.cumsum(A)#累加运算:结果为矩阵 [[6 2][5 3]] ----[6 8 13 16]
np.diff(A) #累减结果为矩阵 有几行,就有几维 [[-4][-2]]
#
np.sort(A)#对每一行进行递增排序 结果 :[[2 6][3 5]]
#矩阵转置
np.transpose(A)
A.T
#特殊
np.clip(A,3,5)#比3小的变成3,比5大的变成5
索引切片
A=np.arange(2,14)
B=A.reshape((3,4))
B[2]#array([10, 11, 12, 13])
B[0][2]# 4
B[1,2]#Out[83]: 8
B[0:2,0:2]#Out[84]:array([[2, 3],[6, 7]])
打印行列
for x in B:
print(x)
# [2 3 4 5]
# [6 7 8 9]
# [10 11 12 13]
for x in B.T:
print(x)
# [2 6 10]
# [3 7 11]
# [4 8 12]
# [5 9 13]
#多维变成一维
B.flatten()
行矩阵
#数组操作:合并拆分
np.vstack((b,c))#上下合并::注意括号(一维不变,接着合并)
# [[ 0 1]
# [ 2 3]
# [ 4 7]
# [ 6 11]]
np.hstack((b,c))#两个数组左右合并(每一个一维数组变,一维数组扩大元素)
# [[ 0 1 4 7]
# [ 2 3 6 11]]
np.dstack((b,c))#深度合并(每一个元素变成一维矩阵)
多个矩阵合并
#列矩阵
A[:,np.newaxis]#[2 3 4 5 6]====[[2][3]]#A.T
np.concatenate((b,c),axis=0)#纵向合并类似于上面的上下合并
#结果是一个列矩阵
np.concatenate((b,c),axis=1)#横向合并,类似于上面的左右合并
#结果是一个原矩阵
多个矩阵拆分:
E=np.arange(1,65).reshape(8,8)#8个矩阵
#演横轴拆分
print(np.split(E,1,axis=1))#同样的(一划分,矩阵不变)
print(np.split(E,2,axis=1))#二划分,矩阵变小,且变成两个数组矩阵
#4(最多变成4划分)