numpy模块

一、numpy 库

# 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()
改变shape
np.reshape()
数组由小变大

Numpy中的函数repeattilevstackhstack,和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([11+2=31+2+3=61+2+3+4=101+2+3+4+5=151+2+3+4+5+6=21])第二部:累加

Numpy binary files (NPY, NPZ)

注:.npy文件是numpy专用的二进制文件。

1. 读取与保存

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)

numpy模块_第1张图片

参考博客:
python读取npy文件

你可能感兴趣的:(Python)