如何将NumPy数组转储为人类可读格式的csv文件?
当前回答
如果你想保存你的numpy数组(例如your_array = np.array([[1,2],[3,4]]))到一个单元格,你可以先用your_array.tolist()转换它。
然后以正常的方式保存到一个单元格,分隔符=';' csv-file中的单元格看起来像这样[[1,2],[2,4]]
然后你可以像这样恢复你的数组: Your_array = np.array(ast.literal_eval(cell_string))
其他回答
将记录数组写入带标题的CSV文件需要更多的工作。
这个例子从一个CSV文件(example. CSV)中读取,并将其内容写入另一个CSV文件(out.csv)。
import numpy as np
# Write an example CSV file with headers on first line
with open('example.csv', 'w') as fp:
fp.write('''\
col1,col2,col3
1,100.1,string1
2,222.2,second string
''')
# Read it as a Numpy record array
ar = np.recfromcsv('example.csv', encoding='ascii')
print(repr(ar))
# rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')],
# dtype=[('col1', '<i8'), ('col2', '<f8'), ('col3', '<U13')])
# Write as a CSV file with headers on first line
with open('out.csv', 'w') as fp:
fp.write(','.join(ar.dtype.names) + '\n')
np.savetxt(fp, ar, '%s', ',')
注意,上面的例子不能处理带有逗号的字符串的值。要始终将非数字值括在引号内,请使用csv内置模块:
import csv
with open('out2.csv', 'w', newline='') as fp:
writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(ar.dtype.names)
writer.writerows(ar.tolist())
如果你想保存你的numpy数组(例如your_array = np.array([[1,2],[3,4]]))到一个单元格,你可以先用your_array.tolist()转换它。
然后以正常的方式保存到一个单元格,分隔符=';' csv-file中的单元格看起来像这样[[1,2],[2,4]]
然后你可以像这样恢复你的数组: Your_array = np.array(ast.literal_eval(cell_string))
Tofile是一个方便的函数:
import numpy as np
a = np.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
a.tofile('foo.csv',sep=',',format='%10.5f')
手册页有一些有用的注释:
这是一个方便的函数,用于快速存储数组数据。 关于字节序和精度的信息会丢失,因此此方法不会丢失 对于用于归档数据或传输数据的文件来说,这是一个很好的选择 在具有不同字节序的机器之间。其中一些问题可以 通过将数据输出为文本文件来克服 速度和文件大小。
请注意。此函数不会生成多行csv文件,它将所有内容保存到一行。
我相信你也可以很简单地做到以下几点:
将Numpy数组转换为Pandas数据框架 另存为CSV
例如# 1:
# Libraries to import
import pandas as pd
import nump as np
#N x N numpy array (dimensions dont matter)
corr_mat #your numpy array
my_df = pd.DataFrame(corr_mat) #converting it to a pandas dataframe
例如# 2:
#save as csv
my_df.to_csv('foo.csv', index=False) # "foo" is the name you want to give
# to csv file. Make sure to add ".csv"
# after whatever name like in the code
numpy。Savetxt将数组保存到文本文件中。
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
推荐文章
- 从matplotlib中的颜色映射中获取单个颜色
- Javascript reduce()在对象
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- Java数组有最大大小吗?
- [].slice的解释。调用javascript?
- 我如何在Django中创建一个鼻涕虫?
- 数组与列表的性能
- 没有名为'django.core.urlresolvers'的模块
- 蟒蛇导出环境文件
- Django - makemigrations -未检测到任何更改
- SQLAlchemy:引擎、连接和会话差异