ndarray是一个多维数组对象,一般要求所有元素类型相同,数组下标从0开始。
属性 | 说明 |
---|---|
.dim | 秩,即轴的数量或维度的数量 |
.shape | 对象的尺度,对于矩阵来说,即n行m列 |
.size | 对象的个数,即n*m的值 |
.dtype | 对象的类型 |
import numpy as np
a=np.array([[1,3,5,7],[2,4,6,8]])
a
a.ndim
a.shape
a.size
a.dtype
#运行结果
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
2
(2,4)
6
dtype('int32')
函数 | 说明 |
---|---|
np.arange(n) | 类似range函数,放回ndarray类型,元素从0到n-1 |
np.ones(shape) | 根据shape生成一个全1数组,shape是元组类型 |
np.zeros(shape) | 根据shape生成一个全0数组 |
np.full(shape,val) | 根据shape生成一个数组,每个元素值都为val |
np.eye(n) | 创建一个正方的n*n单位矩阵,对角线全为1其余为0 |
np.linspace(b,e,n) | 根据起始值等间距的填充数据,形成数组 |
np.arange(10)
np.ones((3,6))
np.zeros((4,4))
np.full((3,2),10)
np.eye(3)
np.ones((2,3,4))
np.linspace(1,10,10)
#运行结果
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.]])
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
array([[10, 10],
[10, 10],
[10, 10]])
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
方法 | 说明 |
---|---|
.reshape(shape) | 不改变数组元素,返回一个shape形状的数组,但原数组不变 |
.resize(shape) | 与.reshape()功能一致,但修改原数组 |
.swapaxes(ax1,ax2) | 将数组n个维度中两个进行交换 |
.flatten() | 对数组进行降维,返回折叠后的一维数组,原数组不变 |
a=np.ones(3,4)
a.resize(4,3)
a.flatten()
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
import numpy as np
#一维数组的索引和切片
a=np.array([1,3,5,7,9])
a[1:4:2] #[起始编号:终止编号(不含):步长,三元素冒号分割]
a[2] #编号0从左开始递增,或-1从右开始递减
a[-2]
#二维数组的切片和索引
a=np.arange(24).reshape((2,3,4))
a[:,1,3] #选取一个维度用:,每个维度切片方法与一维数组相同
a[:,1:3,:]
a[1,2,3] #每个维度一个索引值,逗号分隔
a[-1,-2,-3]
#运行结果
#一维数组的索引和切片
array([3, 7])
5
7
#二维数组的切片和索引
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array([ 7, 19])
array([[[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[16, 17, 18, 19],
[20, 21, 22, 23]]])
23
17
函数 | 说明 |
---|---|
np.abs(x) , np. fabs(x) | 计算数组各数的绝对值 |
np.sqrt(x) | 计算数组各元素的平方 |
np.square() | 计算数组各元素的平方 |
np.log(x), np.log10(x), np.log2(x) | 计算各元素的自然对数,10底对数和2底对数 |
np.ceil(x),np.floor(x) | 前者向上取整,后者向下取整 |
np.rint(x) | 四舍五入 |
np.modf(x) | 将各元素的小数和整数部分以两个独立的数组形式返回 |
np.cos(x), np.cosh(x), np.sin(x), np.sinh(x), np.tan(x), np.tanh(x) | 计算各元素的普通型和双曲型三角函数 |
np.exp(x) | 各元素指数值 |
np.sign(x) | 计算各元素的符号值,1(+),0(0),-1(-) |
函数 | 说明 |
---|---|
+, -, *, / ** | |
np.maximum(x,y),np.fmax(), np.minimum(x,y),np.fmin() | |
np.mod(x,y) | 取模运算 |
np.copysign(x,y) | 将y中各元素值得符号赋给x |
>, <=, >=, !=, == | 算术比较 |
a=np.arange(24).reshape((2,3,4))
b=np.sqrt(a)
#运行结果
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array([[[0. , 1. , 1.41421356, 1.73205081],
[2. , 2.23606798, 2.44948974, 2.64575131],
[2.82842712, 3. , 3.16227766, 3.31662479]],
[[3.46410162, 3.60555128, 3.74165739, 3.87298335],
[4. , 4.12310563, 4.24264069, 4.35889894],
[4.47213595, 4.58257569, 4.69041576, 4.79583152]]])
array([[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]],
[[12., 13., 14., 15.],
[16., 17., 18., 19.],
[20., 21., 22., 23.]]])
函数 | 说明 |
---|---|
rand(d0,d1…,dn) | 根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布 |
randn(d0,d1…,dn) | 根据d0-dn创建随机数组,标准正态分布 |
randint(low,high,shape) | 根据shape创建随机整数或数组,范围是[low,high) |
seed(s) | 随机数种子,s是给定的种子值,作用:使得随机数据可预测,即只要s的值一样,后续生成的随机数都一样。 |
uniform(low,high,size) | 生成具有均匀分布的数组,low为起始值,high为结束值,size为形状 |
normal(loc,scale,size) | 生成具有正态分布的数组,loc为均值,scale为标准差 |
poisson(lam,size) | 生成具有泊松分布的数组,lam随即事件发生概率, |
import numpy as np
a=np.random.rand(2,3,4)
b=np.random.randn(2,3,3)
c=np.random.randint(100,200,(2,4))
np.random.seed(10)
np.random.randint(100,200,(2,4))
np.random.seed(10) #当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
np.random.randint(100,200,(2,4))
u=np.random.uniform(1,10,(3,4))
n=np.random.normal(10,5,(3,4))
#运行结果
array([[[0.44183317, 0.43401399, 0.61776698, 0.51313824],
[0.65039718, 0.60103895, 0.8052232 , 0.52164715],
[0.90864888, 0.31923609, 0.09045935, 0.30070006]],
[[0.11398436, 0.82868133, 0.04689632, 0.62628715],
[0.54758616, 0.819287 , 0.19894754, 0.8568503 ],
[0.35165264, 0.75464769, 0.29596171, 0.88393648]]])
array([[[ 1.23620533, 2.46532508, 1.38323223],
[ 0.34623312, 1.02251611, 0.16681027],
[ 1.65671662, 0.66788961, -0.22994664]],
[[-1.12955119, -0.6399626 , 0.31383052],
[-1.22583598, -0.22179314, 1.33992631],
[ 0.02930971, 1.98538575, 1.4471656 ]]])
#设置了随机数种子后
array([[109, 115, 164, 128],
[189, 193, 129, 108]])
array([[109, 115, 164, 128],
[189, 193, 129, 108]])
array([[3.39009514, 3.37242561, 2.35340081, 7.15436586],
[8.34941652, 4.02464426, 9.01734878, 2.78309632],
[1.27554988, 8.89853446, 7.54691962, 5.86792838]])
array([[ 8.79669028, 4.86323988, 12.12007535, 17.04310437],
[12.19996008, 7.85882803, 8.4399366 , 7.15558307],
[ 2.07529494, 15.27676579, 0.36710445, 13.49291939]])
函数 | 说明 |
---|---|
sum(a,axis=None) | 根据给定轴axis计算数组a相关元素之和,axis为整数或元组 |
mean(a,axis=None) | 计算期望 |
average(a,axis=None,weights=None) | 计算加权平均值 |
std(a,axis=None) | 计算标准差 |
var(a,axis=None | 计算方差 |
min(a), max(a) | 计算a中的最小值,最大值 |
ptp(a) | 计算最大值与最小值的差 |
median(a) | 计算中位数 |
函数 | 说明 |
---|---|
np.gradient(f) | 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度 |
梯度:连续纸之间的变化率,即斜率
具体参考:https://blog.csdn.net/u012005313/article/details/84035371
np.savetxt(frame,array,fmt=’%.2f’,delimiter=None)
np.loadtxt(frame,dtype=np.float,delimiter=None,ynpack=False)
注意:np.savetxt() 和np.loadtxt()只能存取一维和二维数组。
np.tofile(frame,sep=’’,format=’%s’)
np.fromfile(frame,dtype=float,count=-1,sep=’’)
注意:该方法需要知道存入文件时数组的维度和元素类型
便捷文件存取
np.save(frame,array)
np.load(frame)