如何找到正确的numpy`savetxt()`格式?

如何找到正确的numpy`savetxt()`格式?,numpy,string-formatting,Numpy,String Formatting,假设我有一个特殊的数据集: a = np.asarray([[[1,2,3], 'austen', 'austen-emma'], [[4,5,6], 'austen', 'austen-sense']]) 调用的正确格式是什么 np.savetxt(f, a, fmt=format) 我尝试了基于函数的format=[[[%d],%s,%s],但仍然收到一个类型错误。我在这里遗漏了什么?一个简单的%s应该可以解决您的问题,尽管您也可以指定更复杂的格式,因此以

假设我有一个特殊的数据集:

a = np.asarray([[[1,2,3], 'austen', 'austen-emma'],
                [[4,5,6], 'austen', 'austen-sense']])
调用的正确
格式是什么

np.savetxt(f, a, fmt=format)

我尝试了基于函数的
format=[[[%d],%s,%s]
,但仍然收到一个类型错误。我在这里遗漏了什么?

一个简单的%s应该可以解决您的问题,尽管您也可以指定更复杂的格式,因此以下代码可以工作:

import numpy as np
a = np.asarray([[[1,2,3], 'austen', 'austen-emma'],
                 [[4,5,6], 'austen', 'austen-sense']])
np.savetxt("abc",a,fmt="%s")
之所以会出现错误,是因为默认格式是一个浮点数,这里使用%s我们将格式设置为字符串

In [119]: a = np.asarray([[[1,2,3], 'austen', 'austen-emma'],
     ...:                  [[4,5,6], 'austen', 'austen-sense']])
     ...:                  
In [120]: a
Out[120]: 
array([[list([1, 2, 3]), 'austen', 'austen-emma'],
       [list([4, 5, 6]), 'austen', 'austen-sense']], dtype=object)
A
的复制粘贴将生成一个对象数据类型数组。它包含字符串和列表

我们可以指定非常通用的
%s
格式:

In [121]: np.savetxt('test', a, fmt='%s, %s, %s')  # or fmt='%s',delimiter=','
In [122]: cat test
[1, 2, 3], austen, austen-emma
[4, 5, 6], austen, austen-sense
结果是列表的打印表示,例如
str([1,2,3]
和字符串

但是
csv
加载程序将无法处理列表表示

我可以将分隔符更改为;这样就不会与列表字符串中的相混淆:

In [128]: np.savetxt('test', a, fmt='%s', delimiter=';')
In [129]: cat test
[1, 2, 3];austen;austen-emma
[4, 5, 6];austen;austen-sense
In [130]: np.genfromtxt('test',delimiter=';', dtype=str)
Out[130]: 
array([['[1, 2, 3]', 'austen', 'austen-emma'],
       ['[4, 5, 6]', 'austen', 'austen-sense']], dtype='<U12')
[128]中的
:np.savetxt('test',a,fmt='%s',delimiter=';'))
在[129]中:cat试验
[1,2,3];奥斯汀;奥斯汀艾玛
[4,5,6];奥斯汀;奥斯汀感觉
在[130]中:np.genfromtxt('test',delimiter=';',dtype=str)
出[130]:
数组(['[1,2,3]','austen','austen emma'],

['[4,5,6]','austen','austen sense']],dtype='您希望该文件看起来像什么?是否
%s;%s,%s
%tuple(一个[0])`正确吗?
savetxt
只是在数组中迭代,并将
格式
应用到每一行。我希望该文件能够无损地保存数据,并在以后能够将其恢复到相同的numpy数组。相同的数组到底是什么?什么
dtype
shape
?您打算如何读取它?它必须是一个文本文件(
csv
)?为什么不
np.save
,二进制numpy格式?谢谢你,我猜我现在会遇到这个问题,
loadtxt()
那里的
dtype
正确的
dtype
是什么?@limitless dtype=“str”应该会解决它,如果你遇到任何问题的话