numpy常见操作
【1】数组创建及填充
import numpy as np
#[1]————————————————————
# 生成一个数组
#range生成
array1=np.arange(10,20,2)
print(array1)
#linspace生成
array2=np.linspace(10,20,20)
print(array2)
print(type(array1))
#[2]————————————————————
# 0数组和1数组以及其他数组
array3=np.zeros((3,4),dtype=int)
print(array3)
array4=np.ones((5,4),dtype=int)
print(array4)
#0填充
array31=np.zeros_like(array4,dtype=int)
print(array31)
#1填充
array41=np.ones_like(array3,dtype=int)
print(array41)
#任意数值填充
array5=np.full_like(array41,10)
print(array5)
#[3]N维数组属性————————————————————
array6=np.arange(1,21).reshape(4,5)
print(array6)
#显示维度
print(array6.ndim)
#显示形状
print(array6.shape)
#显示大小
print(array6.size)
【2】数组、矩阵的基本运算
import numpy as np
#[1]数组的基本运算————————————————————
array1=np.arange(1,11,1).reshape(2,5)
print(array1)
array2=np.arange(1,11,1).reshape(2,5)
array3=np.full_like(array2,2)
print(array3)
#基本运算,元素度元素
array4=array1+array3
print(array4,”\n”)
array5=array1-array3
print(array5,”\n”)
array6=array1*array3
print(array6,”\n”)
array7=array1/array3
print(array7,”\n”)
#[2]点乘运算————————————————————
#2.1 dot()函数运算
array8=np.arange(1,21,1).reshape(4,5)
print(array8,”\n”)
array9=np.arange(1,21,1).reshape(5,4)
print(array9,”\n”)
array10=np.dot(array8,array9)
print(array10,”\n”)
#2.2 转换为mat矩阵在进行运算
array81=np.mat(array8)
print(array81,”\n”)
array91=np.mat(array9)
print(array91,”\n”)
array11=array91*array81
print(array11,”\n”)
”’
einsum()并不是一个简单的求和运算方法,而是一个高效的符号计算规则,
它可实现矩阵的各种求和操作(如点乘、转置、矩阵求迹等),被称为NumPy的“暗宝”
”’
#[3]einsum()运算————————————————————
#3.1一维数组求和
print(“-“*40)
a=np.arange(1,11)
b=np.einsum(‘i->’,a)
print(b)
#3.2二维数组求和
print(“-“*40)
a1=np.arange(1,21).reshape(4,5)
print(a1)
b1=np.einsum(‘ij->i’,a1)
c1=np.einsum(‘ij->j’,a1)
print(b1)
print(c1)
#3.3矩阵乘法
print(“-“*40)
a3=np.arange(1,21).reshape(4,5)
b3=np.arange(1,21).reshape(5,4)
c3=np.einsum(‘ij,jk->ik’,a3,b3)
print(c3)
#3.4向量点集
print(“-“*40)
a4=np.arange(1,21).reshape(4,5)
b4=np.arange(1,21).reshape(5,4)
c4=np.einsum(‘ij,jk->’,a4,b4)
print(c4)
#3.5 取对角线元素
print(“-“*40)
a5=np.arange(1,17).reshape(4,4)
c5=np.einsum(‘ii->i’,a5)
print(c5)
#3.6 取对角线的迹
print(“-“*40)
a6=np.arange(1,17).reshape(4,4)
c6=np.einsum(‘ii->’,a6)
print(c6)
#3.7 矩阵转置
print(“-“*40)
a7=np.arange(1,16).reshape(3,5)
c7=np.einsum(‘ij->ji’,a7)
print(a7)
print(c7)
【3】*大值、*小值、均值、求和
import numpy as np
”’
np.reshape()作用是将原来的数组变换形状,不改变数组元素数量,要求更改后的数组元素总数不变。
np.resize()作用是改变数组的大小和形状,会改变数组元素数量,如果更改后的数组元素比原数组的多,
则用原数组中的元素充填补齐
”’
a=np.arange(1,13).reshape(3,4)
print(a)
b=np.sum(a,axis=0)
print(‘-‘*50)
print(b)
b=np.sum(a,axis=1)
print(‘-‘*50)
print(b)
b=np.mean(a,axis=0)
print(‘-‘*50)
print(b)
b=np.max(a,axis=0)
print(‘-‘*50)
print(b)
b=np.max(a,axis=(0,1))
print(‘-‘*50)
print(b)
【4】分割和拼接
import numpy as np
”’
堆叠方式大致分为水平方向堆叠(horizontal stack)、
垂直方向堆叠(vertical stack)、深度方向堆叠(depth-wise stack)等。
”’
#————————————-(1)堆叠————————————————
a=np.arange(1,13).reshape(3,4)
#水平方向堆叠
b=np.hstack((a,a))
print(b)
print(‘-‘*50)
#竖直方向堆叠
c=np.vstack((a,a))
print(c)
print(‘-‘*50)
#深度方向堆叠
d=np.arange(10,21)
e=np.arange(40,51)
f=np.arange(70,81)
g=np.dstack((d,e,f))
print(g)
print(‘-‘*50)
#二维列堆叠等价于水平方向堆叠
c1=np.arange(1,13).reshape(3,4)
c2=np.arange(21,33).reshape(3,4)
print(c1)
print(c2)
c3=np.column_stack((c1,c2))
print(c3)
print(‘-‘*50)
#二维行堆叠等价于竖直方向堆叠
c1=np.arange(1,13).reshape(3,4)
c2=np.arange(21,33).reshape(3,4)
print(c1)
print(c2)
c3=np.row_stack((c1,c2))
print(c3)
print(‘-‘*50)
#一维列堆叠
c1=np.arange(1,13)
c2=np.arange(21,33)
print(c1)
print(c2)
c3=np.column_stack((c1,c2))
print(c3)
print(‘-‘*50)
#一维行堆叠
c1=np.arange(1,13)
c2=np.arange(21,33)
print(c1)
print(c2)
c3=np.row_stack((c1,c2))
print(c3)
print(‘-‘*50)
#————————————-(2)分割————————————————
”’
NumPy也提供了数组的分割操作。和堆叠类似,分割也包括水平方向分割、
垂直方向分割和深度方向分割,分别用hsplit()、vsplit()和dsplit()实现。
类似于concatenate()方法可通过设置轴方向,既实现水平方向堆叠,又实现垂直方向堆叠,
split()也可以通过设置分割方向,分别实现hsplit()、vsplit()和dsplit()的功能。
”’
d1=np.arange(1,17).reshape(4,4)
#竖直方向分割
d2=np.vsplit(d1,2)
print(d2)
print(‘-‘*50)
#水平方向分割
d2=np.hsplit(d1,2)
print(d2)
print(‘-‘*50)
#水平按三列分割
d2=np.hsplit(d1,[1,2])
print(d2)
print(‘-‘*50)
#竖直按三行分割
d2=np.vsplit(d1,[1,2])
print(d2)
print(‘-‘*50)
【5】随机数
import numpy as np
#设置随机种子
rdm=np.random.RandomState(1)
#随机分布
r1=np.random.rand(2,3)
print(r1)
print(‘-‘*50)
#正太分布
r1=np.random.randn(2,3)
print(r1)
print(‘-‘*50)
#某个范围随机整数分布
r1=np.random.randint(1,10,(2,3))
print(r1)
print(‘-‘*50)
#某个范围随机数分布
r1=np.random.random((2,3))
print(r1)
print(‘-‘*50)