NumPy数据存储和读入
csv文件(仅限一维和二维数据)
- np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)
* frame:文件,字符串或产生器,可以是.gz或.bz2的压缩文件
* array:存入文件的数组
* fmt:写入文件的格式
* delimiter:分割字符串,默认是空格
- np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=Flase)
- frame:文件,字符串或产生器,可以是.gz或.bz2的压缩文件
- dtype: 数据类型,可选
- delimiter:分割字符串,默认是空格
- unpack: 如果是Ture,读入属性将分别写入不同变量
import numpy as np
a = np.arange(120).reshape(6,20)
np.savetxt('a.csv',a,fmt='%2d',delimiter=',')
b = np.loadtxt('a.csv',delimiter=',')
b
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., 24., 25., 26., 27., 28., 29., 30.,
31., 32., 33., 34., 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50.,
51., 52., 53., 54., 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., 70.,
71., 72., 73., 74., 75., 76., 77., 78., 79.],
[ 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90.,
91., 92., 93., 94., 95., 96., 97., 98., 99.],
[100., 101., 102., 103., 104., 105., 106., 107., 108., 109., 110.,
111., 112., 113., 114., 115., 116., 117., 118., 119.]])
任意维度的数据存储
- .tofile(frame,sep=’’,format=’%s’)
* frame: 文件,字符串
* sep: 数据分割字符串,如果是空串,写入文件为二进制
* format: 写入数据的格式
- np.fromfile(frame,dtype=float,count=-1,sep=’’)
* count:读入元素的个数,-1表示读入全部
其他参数同上
a = np.arange(100).reshape(5,10,2)
a.tofile('b.csv',sep=',',format='%d')
c = np.fromfile('b.csv',dtype=np.int,count= -1,sep=',')
c
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, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
numpy中random模块产生随机数
- 产生随机数的方法
- rand() 产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状
- randn() 产生标准正太分布随机数,参数含义与random相同
- randint() 产生指定范围的随机数,最后一个参数是元祖,确定数组的形状
- 常用分布
- normal() 正太分布
- uniform() 均匀分布
- poisson() 泊松分布
- 乱序和随机抽取
- shuffle() 根据数组的第一轴进行随机排列,改变数组
- permutation() 根据数组的第一轴产生一个新的乱序数组,不改变数组
- choice(a,[,size,replace,p]) 从一维数组中意概率p抽取元素,形成size形状的新数组,replace表示是否可以重用元素,默认是False
a = np.random.rand(3,4,5)
a
array([[[0.68670286, 0.04938666, 0.16380148, 0.65501826, 0.19693535],
[0.84798519, 0.67034773, 0.69859922, 0.89783656, 0.84745347],
[0.63678182, 0.89202542, 0.67822446, 0.92399556, 0.67238938],
[0.47264434, 0.15424216, 0.42999713, 0.62563522, 0.70836184]],
[[0.91237002, 0.76913677, 0.93591072, 0.58704436, 0.52876933],
[0.6959677 , 0.40792933, 0.84349387, 0.38559358, 0.29549017],
[0.80985113, 0.84737437, 0.66548429, 0.42977439, 0.49353092],
[0.31643587, 0.61012592, 0.80750459, 0.67758127, 0.48803914]],
[[0.83164099, 0.97125298, 0.6922265 , 0.81180467, 0.50938635],
[0.60392468, 0.50571989, 0.98953861, 0.8383679 , 0.87153115],
[0.04374014, 0.59827718, 0.77617646, 0.82689766, 0.84759616],
[0.88992718, 0.4399082 , 0.15361888, 0.67068806, 0.71430521]]])
b = np.random.randint(100,120,(3,4))
b
array([[109, 114, 102, 103],
[111, 101, 119, 118],
[109, 110, 115, 101]])
np.random.shuffle(b)
b
array([[109, 114, 102, 103],
[111, 101, 119, 118],
[109, 110, 115, 101]])
np.random.permutation(b)
array([[109, 110, 115, 101],
[109, 114, 102, 103],
[111, 101, 119, 118]])
random中常用的统计函数
sum(a,axis=None) 根据给定轴axis计算数组a的相关元素之和,axis为整数或元组
mean(a,axis=None) 根据给定轴axis计算数组a的相关元素期望
average(a,axis=None,weights=None) 加权平均值
std(a,axis=None) 计算标准差
var(a,axis=None) 计算方差
max(a)/min(a) 返回数组a的最大值或最小值
a = np.arange(15).reshape(3,5)
a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
np.sum(a)
105
np.mean(a)
7.0
np.mean(a,axis=1)
array([ 2., 7., 12.])
np.max(a)
14
NumPy的梯度函数
np.gradient()
c = np.random.randint(0,15,(5))
c
array([ 4, 13, 1, 1, 11])
np.gradient(c)
array([ 9. , -1.5, -6. , 5. , 10. ])