一、数据的CSV文件存取

1、CSV的写文件:

np.savetxt(frame, array, fmt='%.18e', delimiter=None)

  1. frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
  2. array:存入文件的数组;
  3. fmt:写入文件的格式,例如:%d、%.2f、%.18e;
  4. 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=',')


python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_python

 2、CSV的读文件:

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

  1. frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
  2. dtype:数据类型,可选;
  3. delimiter:分割字符串,默认是任何空格;
  4. unpack:如果True,读入属性将分别写入不同变量。

举个例子:读a.csv的文件:

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_数组_02

 提醒:但是CSV文件有自身的局限性,只能有效的存储一维和二维数组。

 二、多维数据的存取

常规文件的存取:
1、写文件:

a.tofile(frame, sep=' ', format='%s')

  1. frame:文件、字符串;
  2. sep:数据分割字符串,如果是空串,写入文件为二进制;
  3. 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=' ')

  1. frame:文件、字符串;
  2. dtype:读取的数据类型;
  3. count:读入元素个数,-1表示读入整个文件;
  4. sep:数据分割字符串,如果是空串,读入文件为二进制。

举个例子:将b.dat文件读文件:

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_开发语言_03

*****************

  • tofile()将数组中的数据以二进制格式写进文件
  • tofile()输出的数据不保存数组形状和元素类型等信息
  • fromfile()函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_numpy_04

 从上面的例子可以看出,在读入数据时:需要正确设置dtype参数,并修改数组的shape属性才能得到和原始数据一致的结果。无论数据的排列顺序是C语言格式还是Fortran语言格式,tofile()都统一使用C语言格式输出。此外如果指定了sep参数,则fromfile()和tofile()将以文本格式对数组进行输入输出。sep参数指定的是文本数据中数值的分隔符。

Numpy的便捷文件存取:

 1、写文件:
np.save(frame, array)   或np.savez(frame, array)

  1. frame:文件名,以.npy为扩展名,压缩扩展名为.npz;
  2. array:数组变量。

2、读文件:

np.load(frame)

  1. frame:文件名,以.npy为扩展名,压缩扩展名为.npz;

举个例子:

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_数据_05

Numpy的随机数函数

Numpy的random子库

基本格式:np.random.*

  np.random.rand()、np.random.randn()、np.random.randint()

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_开发语言_06

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_开发语言_07

python用numpy读取csv文件和行名字 numpy读取csv文件的方法是_开发语言_08

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. ]])]次外层维度的梯度值(按行)

********由于统计函数上节已经补充过这里不再填充