Skip to main content
 首页 » 编程设计

python之numpy.genfromtxt 从名称/键中删除冒号

2025年05月04日14mq0036

我使用 numpy 的 np.genfromtxt(FileName,delimiter=",",names=True) 将 csv 文件导入 numpy 数组。一切似乎都工作正常,除了我的标题有带冒号的名称(例如 Points:1),但 numpy 设置此数据列的键没有冒号(例如 Points1).

为什么会发生这种情况,有什么办法可以防止这种情况发生吗?

MWE

最小.csv:

"Time", "Points:0", "Points:1" 
0.0, 1.0, 2.0 
3.0,4.0,5.0 

脚本:

import numpy as np 
data = np.genfromtxt("min.csv",delimiter=",",names=True) 
print data 
print data.dtype 

输出:

[( 0.,  1.,  2.) ( 3.,  4.,  5.)] 
[('Time', '<f8'), ('Points0', '<f8'), ('Points1', '<f8')] 

请您参考如下方法:

来自numpy “验证名称”下的文档:

deletechars Gives a string combining all the characters that must be deleted from the name. By default, invalid characters are ~!@#$%^&*()-=+~\|]}[{';: /?.>,< .

所以你需要做的就是添加你自己的deletechars值(value)。在下面的示例中,我只是从文档中复制了字符串并删除了冒号:

import numpy as np 
data = np.genfromtxt( 
    "min.csv",delimiter=",",names=True, 
    deletechars="~!@#$%^&*()-=+~\|]}[{'; /?.>,<", 
) 
print data 
print data.dtype 

结果是这样的:

[( 0.,  1.,  2.) ( 3.,  4.,  5.)] 
[('Time', '<f8'), ('Points:0', '<f8'), ('Points:1', '<f8')]