Jim*_*som 769
numpy.savetxt
将数组保存到文本文件.
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
Run Code Online (Sandbox Code Playgroud)
max*_*lec 111
你可以用pandas
.它确实需要一些额外的内存,因此并不总是可行,但它非常快速且易于使用.
import pandas as pd
pd.DataFrame(np_array).to_csv("path/to/file.csv")
Run Code Online (Sandbox Code Playgroud)
如果您不想要标题或索引,请使用 to_csv("/path/to/file.csv", header=None, index=None)
ato*_*3ls 40
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')
Run Code Online (Sandbox Code Playgroud)
手册页有一些有用的注释:
这是一种便于快速存储阵列数据的功能.有关字节序和精度的信息会丢失,因此对于要在具有不同字节序的计算机之间存档数据或传输数据的文件,此方法不是一个好的选择.通过以速度和文件大小为代价将数据输出为文本文件,可以克服其中一些问题.
注意.此功能不会生成多行csv文件,它会将所有内容保存到一行.
Mik*_*e T 13
将记录数组写为带有标题的CSV文件需要更多的工作.
此示例读取带有第一行标题的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')
print(repr(ar))
# rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')],
# dtype=[('col1', '<i4'), ('col2', '<f8'), ('col3', 'S13')])
# 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', ',')
Run Code Online (Sandbox Code Playgroud)
请注意,此示例不考虑带逗号的字符串.要考虑非数字数据的引号,请使用csv
包:
import csv
with open('out2.csv', 'wb') as fp:
writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(ar.dtype.names)
writer.writerows(ar.tolist())
Run Code Online (Sandbox Code Playgroud)
小智 10
要将 NumPy 数组存储到文本文件,请savetxt
从 NumPy 模块导入
考虑您的 Numpy 数组名称是train_df:
import numpy as np
np.savetxt('train_df.txt', train_df, fmt='%s')
Run Code Online (Sandbox Code Playgroud)
或者
from numpy import savetxt
savetxt('train_df.txt', train_df, fmt='%s')
Run Code Online (Sandbox Code Playgroud)
我相信您也可以非常简单地完成此操作,如下所示:
例如#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
Run Code Online (Sandbox Code Playgroud)
例如#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
Run Code Online (Sandbox Code Playgroud)
如前所述,将数组转储为CSV文件的最佳方法是使用.savetxt(...)
方法。但是,有些事情我们应该知道如何正确完成。
例如,如果您有一个带dtype = np.int32
as 的numpy数组
narr = np.array([[1,2],
[3,4],
[5,6]], dtype=np.int32)
Run Code Online (Sandbox Code Playgroud)
并想另存savetxt
为
np.savetxt('values.csv', narr, delimiter=",")
Run Code Online (Sandbox Code Playgroud)
它将数据以浮点指数格式存储为
1.000000000000000000e+00,2.000000000000000000e+00
3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00
Run Code Online (Sandbox Code Playgroud)
你必须使用一个名为参数更改格式fmt
为
np.savetxt('values.csv', narr, fmt="%d", delimiter=",")
Run Code Online (Sandbox Code Playgroud)
以原始格式存储数据
此外,savetxt
还可用于以.gz
压缩格式存储数据,这在通过网络传输数据时可能很有用。
我们只需要更改文件的扩展名,因为.gz
numpy会自动处理所有内容
np.savetxt('values.gz', narr, fmt="%d", delimiter=",")
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
小智 5
如果你想写在列中:
for x in np.nditer(a.T, order='C'):
file.write(str(x))
file.write("\n")
Run Code Online (Sandbox Code Playgroud)
这里 'a' 是 numpy 数组的名称,'file' 是要写入文件的变量。
如果你想写成一行:
writer= csv.writer(file, delimiter=',')
for x in np.nditer(a.T, order='C'):
row.append(str(x))
writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
562769 次 |
最近记录: |