正确保存 numpy 数组



我是Python的新手,如果我的问题非常基本,请道歉,但这让我发疯。

因此,我创建了一个带有字符串行标题的浮点数的 2D numpy 数组。我想保存数组,以便我可以重新打开它并在以后使用它。

我尝试按如下方式使用np.savetxt

np.savetxt('1_array', waves)

但它给出了明显的错误:

类型错误:数组 dtype ('|S11'( 和格式说明符 (

'%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e'(

我寻找解决方案,但我似乎找不到任何适合我的情况的解决方案。直观地,应该有一种方法可以指定只有第一行是字符串,但我不知道该怎么做。

任何帮助将不胜感激!

您需要单独保存标头并将其余部分另存为浮点数。

waves_data = waves[1:].astype(float)
header = ' '.join(waves[0])
np.savetxt(
'1_array', waves_data, delimiter=",", header=header
)

我不明白你为什么要在一个 numpy 数组中混合类型,但这在这里并不重要。保存任何内容以供以后使用的最简单解决方案可能是使用模块 pickle。下面的代码段,无论您放入数组中的内容,它都应该解决您的问题:

import numpy as np
import pickle
waves = np.array([['a', 'b', 'c'], [1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])  # if I understood correctly
# writing file to the hard drive
with open('testfile.p', 'wb') as f:
pickle.dump(waves, f)
# reading from hard drive
with open('testfile.p', 'rb') as f:
waves2 = pickle.load(f)

最新更新