TypeError:数组 dtype ('float64') 和格式说明符不匹配

新手上路,请多包涵

我有一个尺寸为 1000*30*150 的 numpy 数组。我正在尝试将其保存为 txt 文件。到目前为止我已经试过了

np.savetxt("test.txt", mydata, fmt='%.5f', delimiter=",")
#and
with open('test.txt', 'w') as f:
    for row in mydata:
        np.savetxt(f, row, delimiter=',', fmt='%.5f')

两种方法都给我错误

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/numpy/lib/npyio.py", line 1254, in savetxt
    fh.write(asbytes(format % tuple(row) + newline))
TypeError: only length-1 arrays can be converted to Python scalars

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

        np.savetxt("test.txt", train, fmt='%.5f', delimiter=",")
      File "/usr/local/lib/python3.5/dist-packages/numpy/lib/npyio.py", line 1258, in savetxt
        % (str(X.dtype), format))
    TypeError: Mismatch between array dtype ('float64') and format specifier ('%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f,%.5f')

原文由 Test Test 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 775
2 个回答

您没有提到将 3-d 数组写入文本文件的目的是什么,您将来会读回它,以及您在寻找什么格式,但这是一种可能性:

 import json
print(json.dumps(mydata, default=lambda x: list(x), indent=4))

如果您阐明了目的,人们将能够提出更合适的解决方案。

原文由 Egal 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题是您的数组是 3 维的,不能以二维格式保存。要么重塑它,使其成为 2d:

 mydata = mydata.reshape(mydata.shape[0],mydata.shape[1]*mydata.shape[2])
np.savetxt('text.txt',mydata,fmt='%.5f',delimiter=',')

或者,如果您不需要将其作为文本文件读取,而只想稍后在 python 中重新加载它,请使用:

 np.save('text.npy',mydata)

原文由 DJK 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题