numpy学习笔记3

文章介绍了使用numpy库在Python中对CSV文件进行读写操作,包括一维和二维数组的数据存取。同时,文章详细展示了numpy如何生成各种类型的随机数数组,如均匀分布、正态分布等,并提供了数组的随机排列和选择方法。此外,还提及了数组的梯度计算功能。
摘要由CSDN通过智能技术生成

 文件操作

数据的csv文件的存取(一维或二维数组)

import numpy as np
np.savetxt(frame,array.fmt='%.18e',delimiter=None)
#frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
#array:存入文件的数组
#fmt:写入文件的格式,例如:%d %.2f %.18e
#delimiter:分割字符串,默认时任何空格

csv文件数据读入到numpy的数组类型中(一维或二维数组)

import numpy as np
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
#frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
#dtype:数据类型,可选
#delimiter:分割字符串,默认时任何空格
#unpack:如果True,读入属性分别写入不同变量

从文本文件或二进制文件中还原数据

import numpy as np
np.fromfile(frame,dtype=float,count=-1,sep='')
#frame:文件、字符串
#dtype:读取的数据类型
#count:读入元素个数,-1表示读入整个文件
#sep:数据分割字符串,如果是空字串,写入文件为二进制

numpy的便捷文件存取

import numpy as np
np.save(fname,array) or np.savez(fname,array)
#frame:文件名,以.npy为扩展名,压缩扩展名为.npz
#array:数组变量
np.load(fname)
#frame:文件名,以.npy为扩展名,压缩扩展名为.npz

--------------------------------------------------------------分割线----------------------------------------------------------

numpy的随机数函数

import numpy as np
a = np.random.rand(3,4,5)     #生成维度为(3,4,5),数值区间为[0,1)的随机数数组,均匀分布
a
array([[[0.63394149, 0.28966729, 0.63611511, 0.78016918, 0.19599468],
        [0.93886965, 0.5077604 , 0.64635107, 0.29334663, 0.97381786],
        [0.05472683, 0.98850136, 0.88245718, 0.32212938, 0.02006473],
        [0.12897813, 0.56836393, 0.41214168, 0.66463788, 0.63539398]],

       [[0.35328741, 0.66268993, 0.62673421, 0.87587754, 0.3222454 ],
        [0.84176218, 0.64343764, 0.2694605 , 0.01058379, 0.55030771],
        [0.72114232, 0.01948934, 0.02652867, 0.4742012 , 0.54522257],
        [0.86986618, 0.37867356, 0.54525201, 0.97961991, 0.50335984]],

       [[0.13317554, 0.6380611 , 0.12572216, 0.29611249, 0.727078  ],
        [0.45974609, 0.12395676, 0.77638238, 0.05430556, 0.3638538 ],
        [0.31615155, 0.65405036, 0.05494569, 0.93484136, 0.47582343],
        [0.26961729, 0.32210147, 0.17187081, 0.45455539, 0.8792981 ]]])

--------------------------------------------------------------分割线--------------------------------------------------------- 

import numpy as np
a = np.random.randn(3,4,5)       #创建随机数数组,标准正态分布   
a
array([[[-2.12530987e-01, -8.99589571e-01,  1.55889825e+00,
          4.88452296e-01,  4.11434479e-01],
        [ 1.18130827e+00,  1.92736737e+00,  9.50150716e-01,
          8.75598109e-01,  1.48891396e+00],
        [ 1.02255802e+00, -3.33902434e-01,  2.81798899e-01,
          6.65496833e-01, -1.96370579e-01],
        [-4.07986215e-01,  8.58217989e-01, -1.01830362e+00,
          5.14395336e-01, -1.26245984e-01]],

       [[ 1.42065351e+00, -2.42147099e+00,  1.14885813e-03,
          2.67506384e-01,  1.50822797e+00],
        [-2.08128123e+00,  8.26800576e-02,  1.19007231e+00,
          1.63902651e+00,  1.75132656e-02],
        [-1.36982778e+00,  1.81191296e+00,  1.29191068e+00,
         -1.05839514e+00,  6.46897204e-01],
        [-2.40295649e-02,  1.37531191e+00,  5.78466058e-01,
          2.37765630e+00,  6.49561600e-01]],

       [[ 3.91776290e-02,  2.93146596e+00, -2.65603938e-01,
         -2.68836276e-01, -1.10835457e+00],
        [-1.68861051e+00, -2.72436532e-01,  8.14199166e-01,
          5.18645080e-01,  2.44864339e-01],
        [ 2.92698757e+00,  1.09205474e+00,  6.37052541e-01,
         -3.96930926e-01,  3.58666682e-01],
        [-4.48993889e-01,  4.80170123e-01, -1.61919620e+00,
         -1.08789799e+00,  5.72295121e-01]]])

--------------------------------------------------------------分割线--------------------------------------------------------- 

import numpy as np
a = np.random.randint(100,200,(3,4))       #创建随机整数或整数数组,范围是[low,high)   
a
array([[183, 114, 184, 156],
       [172, 124, 159, 158],
       [118, 108, 168, 145]])

--------------------------------------------------------------分割线--------------------------------------------------------- 

np.random.seed()    #随机数种子,种子相同,产生的随机数相同

--------------------------------------------------------------分割线--------------------------------------------------------- 

np.random.shuffle(a)   #表示根据数组a的第一轴进行随排列,改变原数组
np.random.permutation(a)   # #表示根据数组a的第一轴进行随排列,不改变原数组

np.random.choice(a,(2,3),replace=True or False,p)     
#从a数组随机选取元素,形状为(2,3),replace=True为默认值,会重复选取,修改成False则不会重复选取
#p为选取概率,例如p = a/np.sum(a)
np.random.uniform(low,high,size)
#产生具有均匀分布的数组,low起始值,high结束值,size形状

np.random.normal(loc,scale,size)
#产生具有正态分布的数组,loc为均值,scale为标准差,size形状

np.random.poisson(lam,size)
#产生具有泊松分布的数组,lam随机事件发生率,size形状

--------------------------------------------------------------分割线--------------------------------------------------------- 

np.argmin(a) or np.argmax(a)  #计算数组a中元素最小值,最大值的降一维后下标
unravel_index(index,shape)    #根据shape将一维下标index转化为多维下标
                              #如index = np.argmax(a),shape = a.shape

--------------------------------------------------------------分割线--------------------------------------------------------- 

 numpy的梯度函数

np.gradient(f)  #计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
                #梯度,即斜率,[a,b,c]中b的梯度,则用(c-a)/2得到,a的梯度用(b-a)/1得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值