# 1.导入numpy
import numpy as np
# 2.生成numpy数组
v = np.array([1,2,3,4])
m = np.array([[1,2],[3,4]])
print(v.shape,m.shape) # 获取形状 (4,) (2, 2) shape属性很重要
print(v.size,m.size) # 获取元素个数 4 4
mc = np.array([[1,2],[3,4]],dtype=complex)
print(mc)
# arange函数:起始点,终点,步长;不包括终点
a = np.arange(0,10,1)
b = np.arange(-1,1,0.1)
# linspace函数:起始点,终点,分割份数;包括终点
c = np.linspace(0,10,5) # 线性等分函数
# logspace函数:如下例子,各项分别为e^1,e^2,e^3,...e^10,
d = np.logspace(1,10,10,base=2)
# mgrid函数:实际工作中也很有用,在这里我列举一个
x,y = np.mgrid[0:5,0:5]
# 特殊点的矩阵,对角阵
x = np.diag([1,2,3])
# 主对角线偏移1的矩阵
x = np.diag([1,2,3],k=1)
# 零阵:
d = np.zeros([3,3]) # 可以创建多维度数组
# 1阵
x = np.ones((3,3))
#
x = np.empty((3,3))
# 获取(0,1)上的均匀分布,生成shape为(1,2,3)的三维数组
d = np.random.rand(1,2,3)
# 满足均值为0,方差为1的高斯分布得到随机数据,生成shape为(5,)的一维数组:
d = np.random.randn(5)
print(d)
M = np.random.rand(2,3,4)
# 每个元素的字节数
M.itemsize
# M的总字节数
M.nbytes # 192
# M的维数
M.ndim
# 索引数组的元素,可以使用方括号和下标,M是三维,下标索引的方法:
M = np.random.rand(2,3,4)
print(M[1,1,2]) #
print(M[0,:,:])
print(M[:,:2,1:3])
M[0,:,1] = 1.0
print(M)
# 掩码索引,这一特性对于带条件的选取元素很重要。例如,使用arange生成一维数组x:
x = np.arange(0,10,0.5)
# 判断x中哪些元素大于5呢
# 然而有时候,我们想知道x中哪些位置的元素大于5,此时要借助where:
a = np.where(x>5)
print(a)
Numpy中两个数组加减乘除等,默认都是对应元素的操作:
v1 = np.array([0,1,2,3,4])
# v1+2
print(v1)
# v1*v1
print(v1*v1) # array([0,1,4,9,16])
# dot 操作
# 数值[1,10]内,生成shape为(5,2)的随机整数数组
v2 = np.random.randint(1,10,(5,2))
# v1:1行5列,v2:5行2列,结果1行2列
print(np.dot(v1,v2)) # array([28,29])
# 另一种方法包装为matrix类:
matrix(v1)*matrix(v2)
# 求矩阵的行列式,要求数组的最后两个维度相等,因此重新构造矩阵:
v3 = np.random.randint(0,10,(3,3))
v3m = matrix(v3)
linalg.det(v3m)
# 求平均值
v3 = np.array([[6,5,8],
[8,4,0],
[3,8,1]])
v3.mean()
v3.mean(axis=1) # 按行求平均
# array([6.333333, 4. ,4. ])
# 求标准差
v3.std()
# 求方差
v3.var()
# 求最大值
v3.max(axis=1)
# 求最小值
v3.min(axis=1)
# 求和
v3.sum(axis=1)
# 求累乘
# 求累和
# 求迹
v3.trace()
diag(v3).sum()
np.reshape()
Numpy中的函数repeat
,tile
,vstack
,hstack
,和concatenate
具备变换小数组为大数组的能力。
repeat
复制元素
a = np.array([[1,2],[3,4]])
b = np.repeat(a,2,axis=1)
print(b)
c = np.repeat(a,2,axis=0)
print(c)
numpy.cumsum(a, axis=None, dtype=None, out=None)
axis=0,按照行累加。
axis=1,按照列累加。
axis不给定具体值,就把numpy数组当成一个一维数组。
a = np.array([[1,2,3], [4,5,6]])
np.cumsum(a)
# array([ 1, 3, 6, 10, 15, 21])
np.cumsum(a,axis=0) #按照行累加,行求和
np.cumsum(a,axis=1) #按照列累加,列求和
np.cumsum(a, dtype=float) # 指定输出类型。
# 注意啦!没有指定轴参数(axis)!输出就变成1维数组了。
array([ 1., 3., 6., 10., 15., 21.])第一步:每个值都变成float了
array([1,1+2=3,1+2+3=6,1+2+3+4=10,1+2+3+4+5=15,1+2+3+4+5+6=21])第二部:累加
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6]])
np.save('weight.npy', arr)
loadData = np.load('weight.npy')
print("----type----")
print(type(loadData))
print("----shape----")
print(loadData.shape)
print("----data----")
print(loadData)
参考博客:
python读取npy文件