一、数据的CSV文件存取
1、CSV的写文件:
np.savetxt(frame, array, fmt='%.18e', delimiter=None)
- frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
- array:存入文件的数组;
- fmt:写入文件的格式,例如:%d、%.2f、%.18e;
- delimiter:分割字符串,默认是任何空格。
举个例子:用Numpy生成5 * 20的二维数组,并且把该数组保存到a.csv的文件中:
import numpy as np a = np.arange(100).reshape(5, 20) np.savetxt('a.csv', a, fmt='%d', delimiter=',')
2、CSV的读文件:
np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
- frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
- dtype:数据类型,可选;
- delimiter:分割字符串,默认是任何空格;
- unpack:如果True,读入属性将分别写入不同变量。
举个例子:读a.csv的文件:
提醒:但是CSV文件有自身的局限性,只能有效的存储一维和二维数组。
二、多维数据的存取
常规文件的存取:
1、写文件:
a.tofile(frame, sep=' ', format='%s')
- frame:文件、字符串;
- sep:数据分割字符串,如果是空串,写入文件为二进制;
- format:写入数据格式。
举个例子:将三维数组写入b.dat中:
import numpy as np
a = np.arange(100).reshape(5, 10, 2)
a.tofile("b.dat", sep=",", format='%d')
2、读文件:
np.fromfile(frame, dtype=float, count=-1, sep=' ')
- frame:文件、字符串;
- dtype:读取的数据类型;
- count:读入元素个数,-1表示读入整个文件;
- sep:数据分割字符串,如果是空串,读入文件为二进制。
举个例子:将b.dat文件读文件:
*****************
- tofile()将数组中的数据以二进制格式写进文件
- tofile()输出的数据不保存数组形状和元素类型等信息
- fromfile()函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改
从上面的例子可以看出,在读入数据时:需要正确设置dtype参数,并修改数组的shape属性才能得到和原始数据一致的结果。无论数据的排列顺序是C语言格式还是Fortran语言格式,tofile()都统一使用C语言格式输出。此外如果指定了sep参数,则fromfile()和tofile()将以文本格式对数组进行输入输出。sep参数指定的是文本数据中数值的分隔符。
Numpy的便捷文件存取:
1、写文件:
np.save(frame, array) 或np.savez(frame, array)
- frame:文件名,以.npy为扩展名,压缩扩展名为.npz;
- array:数组变量。
2、读文件:
np.load(frame)
- frame:文件名,以.npy为扩展名,压缩扩展名为.npz;
举个例子:
Numpy的随机数函数
Numpy的random子库
基本格式:np.random.*
np.random.rand()、np.random.randn()、np.random.randint()
Numpy的梯度函数
np.random的梯度函数
函数 | 说明 |
np.gradient | 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度 |
梯度:连续值之间的变化率,即斜率。 XY坐标轴连续X坐标对应的Y轴值:a,b,c,其中b的梯度是:(c-a)/2
一维:
np.gradient(f)
举例:
a=array([15,3,12,13,14])
则np.gradient(a)
返回([-12,-1.5,5,1,1])
每个元素为(后一个元素-前一个元素)/2,
首位元素为后-前,3-15=-12,14-13=-1
高维:
c=np.random.randint(0,50,(3,5))
c=array([[24, 16, 19, 8, 35],
[38, 19, 7, 17, 43],
[34, 45, 38, 0, 3]])
对于高维的array来说,有几个维度,就会返回几个array,顺序如下:
np.gradient(c)
[array([[ 14. , 3. , -12. , 9. , 8. ],
[ 5. , 14.5, 9.5, -4. , -16. ],
[ -4. , 26. , 31. , -17. , -40. ]]),最外层维度的梯度值(按列)
array([[ -8. , -2.5, -4. , 8. , 27. ],
[-19. , -15.5, -1. , 18. , 26. ],
[ 11. , 2. , -22.5, -17.5, 3. ]])]次外层维度的梯度值(按行)
********由于统计函数上节已经补充过这里不再填充