我试图保存一个由浮点和一列字符串组成的数组,得到了一些非常奇怪的结果。这就是我所尝试的:
data = np.column_stack((f1, f2, f3, s1))
第一列(f1
)是长浮点数(最多10位数,但我只需要2个)。我还需要第二列和第三列的2-3位数字,f2
和{s1
只包含两个不同的字符串:'FeI'
和{
问题是,当我试图打印data
时,会得到这样的结果:
虽然我希望得到这样的结果(我不在乎是否将浮动保存为字符串,因为我可以很容易地将它们作为浮动加载):
[['7352.91' '11.78' '-4.92' 'FeI']
...,
['53407.66' '22.82' '-8.27' 'FeII']]
正如你所看到的,主要问题是,53407.66变成了5340——一个量级的变化!在
可能的解决方案
改为使用np.array
并使用dtype
-选项。但是,我不知道如何将列存储为字符串。有什么帮助吗?在
为什么不预处理存储的数据? 像
如果您打算以后使用它们,那么您可能应该只在打印时将它们表示为字符串,而不是将它们存储在数组中。在
使用结构化数组来保存数据,而不是使用
column_stack
。在假设这是您的数据:
下面是如何创建结构化数组。第一个参数是元组列表。每个元组保存数组中每个结构化元素的值。
^{pr2}$dtype
参数定义结构中字段的数据类型。在本例中,有三个浮点字段(名为“f1”、“f2”和“f3”)和一个字段(名为“s1”),其中包含最多16个字符的字符串:要在使用
np.savetxt
保存时控制字段的格式,可以为其提供一个格式列表,每个字段一个:注意:要考虑的另一个选项是将数据放入pandas数据帧中,并使用其^{} 方法。在
使用zip的解决方案在大多数情况下都可以工作,但我认为它可能不是最有效的解决方案。另外,当其中一个数组的类型为np.日期时间64. 这里有另一个使用熊猫的解决方案…:
相关问题 更多 >
编程相关推荐