我是Python的新手,如果我的问题非常基本,那么道歉,但这让我发疯了。
所以,我创建了一个2D numpy浮点数组,带有一个字符串行标题。我想保存数组,以便我可以重新打开它并在以后工作。
我尝试使用np.savetxt
,如下所示:
np.savetxt('1_array', waves)
但它给出了明显的错误:
TypeError:数组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')
我找了一个解决方案,但我似乎找不到任何适合我的情况。直觉上,应该有一种方法来指定唯一的第一行是一个字符串,但我无法弄清楚如何做到这一点。
任何帮助将不胜感激!
答案 0 :(得分:1)
您需要单独保存标题并将其余部分保存为float。
waves_data = waves[1:].astype(float)
header = ' '.join(waves[0])
np.savetxt(
'1_array', waves_data, delimiter=",", header=header
)
答案 1 :(得分:0)
我不明白你为什么要在一个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)