Numpy数组数据文件的读写

Posted 忧郁的白衬衫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy数组数据文件的读写相关的知识,希望对你有一定的参考价值。

一、引言

读写数据文件的重要性就不必多说了。

二、读取列表形式数据的文件

1、我们写几行CSV格式(列表形式,两值之间逗号隔开)的数据。

id,height,age
1,175,20
2,168,18
3,177,30
4,142,12

使用genfromtxt()函数读取数据。接收三个参数:文件名,分隔符,是否有列标题

In [4]: a = np.genfromtxt(test.csv,delimiter=,,names=True)

In [5]: a
Out[5]:
array([( 1.,  175.,  20.), ( 2.,  168.,  18.), ( 3.,  177.,  30.),
       ( 4.,  142.,  12.)],
      dtype=[(id, <f8), (height, <f8), (age, <f8)])

这个函数的包含两层循环:第一层循环每一行,第二层循环将每一行中的多个值分开后转化,一次插入所创建的数组。优点是能够处理文件中缺失的数据(Nan)。

2、我们试图删除几个元素看看

id,height,age
1,175,
2,168,18
,177,30
4,,12
In [6]: a = np.genfromtxt(test.csv,delimiter=,,names=True)

In [7]: a
Out[7]:
array([(  1.,  175.,  nan), (  2.,  168.,  18.), ( nan,  177.,  30.),
       (  4.,   nan,  12.)],
      dtype=[(id, <f8), (height, <f8), (age, <f8)])

 

可见,genfromtxt()函数将缺失的数据填充为nan值(应该是no a number)

3、获取某行或者某列

In [8]: a[0]
Out[8]: ( 1.,  175.,  nan)

In [9]: a[height]
Out[9]: array([ 175.,  168.,  177.,   nan])

三、二进制文件读写

save()已二进制格式保存数据,参数:文件名(不用后缀),数据。

load()从二进制文件读取数据,参数:文件名(带后缀)

1.执行sava()后,在本目录创建了my_data.npy二进制文件

In [10]: data = np.random.random((3,3))

In [11]: data
Out[11]:
array([[ 0.35264296,  0.81619681,  0.24089159],
       [ 0.31230919,  0.14782997,  0.53526203],
       [ 0.5505135 ,  0.64876637,  0.17538648]])

In [12]: np.save(my_data,data)

2、二进制文件数据读取,以文件名作为参数,并带上.npy扩展名

In [13]: np.load(my_data.npy)
Out[13]:
array([[ 0.35264296,  0.81619681,  0.24089159],
       [ 0.31230919,  0.14782997,  0.53526203],
       [ 0.5505135 ,  0.64876637,  0.17538648]])

 

以上是关于Numpy数组数据文件的读写的主要内容,如果未能解决你的问题,请参考以下文章

Numpy | 23 IO

20200111(Numpy)

NumPy:数组计算

numpy的文件存储,读取 .npy .npz 文件

学习基础知识:数组和矢量计量Numpy

NumPy基础:数组和失量计算