【发布时间】:2020-09-13 12:31:48
【问题描述】:
我第一次使用np.savetxt,我试图将两个变量(一个字符串和一个浮点数)保存在一个名为“trial.csv”的文件中,如下所示:
import numpy as np
RT = 2.76197329736740
key_name = 'space'
print(RT,key_name)
# Save data in a CSV file named subj_data_file
np.savetxt("trial.csv", (RT,key_name), delimiter=',', header="RTs,Key_Name")
我收到以下错误:
TypeError: Mismatch between array dtype ('<U32') and format specifier ('%.18e')
我不明白('<U32') 和('%.18e') 的含义。事实上,当我有浮点数、整数和字符串时,我不明白如何使用fmt ...
这是一个简化的示例,但具体而言,我会将 RT 值(浮点数)放在一列“RTs”中,将 key_name(浮点数)值放在另一列“Key_Name”中。稍后我将创建更多列,虽然我在此示例中为 RT 提供了一个值,为 key_name 提供了一个值,但“RTs”列中将有更多 RT 值以及“Key_Name”列中的键名。
【问题讨论】:
-
savetxt将一个 numpy 数组写入文件,首先通过fmt将其转换为字符串。默认fmt是“%.18e”,将数字转换为“1.234e10”之类的东西。要查看它试图保存的内容,print(np.array({RT, key_name))。使用savetxt保存数字和字符串的组合并非易事。 -
@hpaulj 它打印
{2.713, 'space'}。然后我应该选择一种不同的方法来将混合数据类型保存在 CSV 文件中吗? -
我收到
array(['2.7619732973674', 'space'], dtype='<U32')。它使用字符串值创建一个数组,而不是数字和字符串的混合。你真的必须用它保存标签的数字。对于初学者来说,仅保存和加载数字比混合数字和字符串要容易得多。