numpy常用操作

1、N维数组对象(ndarray)

ndarray是一个多维数组对象,一般要求所有元素类型相同,数组下标从0开始。

2、对象的属性
属性说明
.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')

3、数组的创建
函数说明
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.])

4、数组的变换
方法说明
.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.])

5、数组的索引和切片
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

6、数组运算
  • numpy一元函数
函数说明
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(-)
  • numpy二元函数
函数说明
+, -, *, / **
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.]]])  

7、numpy的随机数函数子库
函数说明
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]])                

8、numpy的统计函数
函数说明
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)计算中位数
9、numpy的梯度函数
函数说明
np.gradient(f)计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

梯度:连续纸之间的变化率,即斜率
具体参考:https://blog.csdn.net/u012005313/article/details/84035371

10、csv数据存取

np.savetxt(frame,array,fmt=’%.2f’,delimiter=None)

  • frame:文件名
  • array:写入文件的数组
  • fmt:写入文件的格式,例如:%d %.2f
  • delimiter:分割字符串,默认是任何空格

np.loadtxt(frame,dtype=np.float,delimiter=None,ynpack=False)

  • frame:文件名
  • dtype:数据类型(可选)
  • delimiter::分割字符串,默认是任何空格
  • unpack:如果是True,读入数学将分别写入不同变量

注意:np.savetxt() 和np.loadtxt()只能存取一维和二维数组。

np.tofile(frame,sep=’’,format=’%s’)

  • frame:文件名
  • sep:数据分割字符串,如果是空串,写入文件为二进制
  • format:写入数据的格式

np.fromfile(frame,dtype=float,count=-1,sep=’’)

  • frame:文件名
  • dtype:读入的数据类型
  • count:读入元素的个数,-1表示读入整个文件
  • sep:数据分割字符串,如果是空串,写入文件为二进制

注意:该方法需要知道存入文件时数组的维度和元素类型

便捷文件存取
np.save(frame,array)
np.load(frame)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值