numpy 加速 矩阵相加_numpy常用操作总结

本文详细介绍了numpy库中的数组创建、基础运算、数组乘法、索引以及array的合并与分割。内容包括:使用np.array创建不同类型的数组、计算数组的属性如维数、形状和大小;数组的加法、减法、乘方、三角函数等运算;矩阵乘法的点乘表示;数组索引和切片;以及数组的拼接、分割和深拷贝等高级操作。
摘要由CSDN通过智能技术生成

449be7a0cbf7d38799a929b0a9d3a1c0.png

numpy的属性

array=np.array([[1,2,3],[2,3,4]]) #将python列表转换成numpy的数组
print(‘number of dim:’,array.ndim) #打印出数组的维数
pirnt(‘shape’,array.sharp) #打印出数组的行列数
print(‘size:’,array.size) #打印出数组的元素总个数

numpy创建array

a=np.array([2,23,4],dtype=http://np.int) #使用dtype定义数据类型,包含np.int,np.float er al
print(a.dtype)
a=np.zeros((2,3)) #生成2行3列,数值全部为零的数组
a=np.ones((3,4),dtype=np.int16) #定义3行4列,数值全部为1的数组
a=np.empty((3,4)) #生成的是3行4列,数值接近于0的数组
a=np.arange(10,20,2) #生成从10到19,步长为2的数组
a=np.arrange(12).reshape((3,4)) #生成从0到11,3行4列的数组
a=np.linspace(1,10,20).reshape((2,3)) 生成从1到10,样本数据量为20的等差数列,使用reshape可以更改数组的行列数

numpy的基础运算

a=np.array([10,20,30,40])
b=np.arrange(4)
c=a-b #array的减法,对应元素逐个相减
c=b**2 #b的平方
c=np.sin(a) #对a的每个值求sin()值
print(b<3) #判断b中哪些元素小于3,返回的是bool型数值

数组乘法

a=np.array([[1,1],[0,1]])
b=np.arrange(4).reshape(2,2)
c=a*b #numpy数组对应元素相乘
c_dot=np.dot(a,b) #矩阵乘法,点乘
c_dot2=a.dot(b) #矩阵乘法的另一种写法

a=np.random.random((2,4)) #生成2行4列的随机数数组
np.sum(a) #求和
np.min(a) #返回最小值
np.max(a) #返回最大值
np.argmin(a) #搜索最小值的索引
np.argmax(a) #搜索最大值的索引
np.sum(a,axis=1) #axis对数据的某一维度求和,axis=1表示压缩列,即将每一行的元素相加,将矩阵压缩为一列,axis=0表示压缩行,即将每一列的元素相加,将矩阵压缩为一行)
np.mean(a) #求平均值
a.mean() #求平均值的另一种形式
np.medium(a) #求中位数
np.cumsum(a) #按照所给定的轴参数返回元素的梯形累计和,元素个数与原数组相同
np.diff(a) #执行的是后一个元素减去前一个元素
np.nonzero(a) #用于得到数组array中非零元素的位置(数组索引)的函数
np.sort(a) #对数组进行排序,多维数组会逐行进行排序
np.transpose(a) #矩阵转置
a.T #矩阵转置的另一种写法
np.clip(a,a_min,a_max) #该函数的作用是将数组a中的所有数限定到范围a_min和a_max中,所有比a_min小的数都会强制变为a_min,所有比a_max大的数都会强制变为a_max

numpy的索引

A=np.arange(3,15)
print(A[3]) #输出索引为3的数组元素
A=np.arange(3,15).reshape((4,4))
print(A[2]) #当数据为二维数组时,A[2]表示输出数组的第二行
print(A[2][1]) #输出数组的第二行第一列
print(A[2,1]) #输出数组的第二行第一列
print(A[2,:]) #输出第2行的所有数
print(A[1,1:2]) #输出第1行的第1到第2列
for row in A:
print(row) #迭代数组中的每一行
for column in A.T:
print(column) #迭代数组中的每一列
for item in A.flat: #把A转换成一维数组
print(item) #迭代数组中的每一个元素

numpy的array合并

A=np.array([1,1,1])
B=np.array([2,2,2])
C=np.vstack((A,B)) # vertical stack A,B 上下的合并
D=np.hstack((A,B)) # horizontal stack A,B左右合并
E=A[np.newaxis,:] #数组在行上增加了一个维度,此时E.shape为(1,3)
F=A[:,np.newaxis] #数组在列上增加了一个维度,此时F.shape为(3,1)
G=np.concatenate((A,B,B,A),axis=0) #在行这个维度进行合并

numpy的array分割

A=np.arange(12).reshape(3,4)
np.split(A,2,axis=1) #将二维数组A按列进行平均分割
np.array_split(A,3, axis=1) #将二维数组A按列进行不均等的分割
np.vsplit(A,3) #将二维数组A在纵向上等分成3个数组
np.hsplit(A,2) #将二维数组A在水平方向上等分成2个数组

numpy的copy&deep copy

a=np.arange(4)
b=a #b和a是完全一样的

>>> b is a
>>> true

b =a .copy() #deep copy,这里的copy()只是把a的值copy过去了,但是并没有把a和b关联起来,所以改变a的元素,b并不会发生改变

>>>b=a.copy()
>>>a[3]=44
>>>a
array([0,1,2,44])
>>>b
array([0,1,2,3])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值