【发布时间】:2014-03-24 08:08:30
【问题描述】:
我想将一个标准的 ascii csv 文件读入 numpy,它由浮点数和字符串组成。
例如,
ZINC00043096,C.3,C1,-0.1540,methyl
ZINC00043096,C.3,C2,0.0638,methylene
ZINC00043096,C.3,C4,0.0669,methylene
ZINC00090377,C.3,C7,0.2070,methylene
...
无论我尝试什么,结果数组都会是这样的
例如,
all_data = np.genfromtxt(csv_file, dtype=None, delimiter=',')
[(b'ZINC00043096', b'C.3', b'C1', -0.154, b'methyl')
(b'ZINC00043096', b'C.3', b'C2', 0.0638, b'methylene')
(b'ZINC00043096', b'C.3', b'C4', 0.0669, b'methylene')
但是,我想为字节字符串转换保存一个步骤,并且想知道如何将字符串列作为常规字符串直接读取。
我从 numpy.genfromtxt() 文档中尝试了几件事,例如,dtype='S,S,S,f,S' 或 dtype='a25,a25,a25,f,a25',但这里没有任何帮助。
我很害怕,但我想我只是不明白 dtype 转换是如何工作的......如果你能在这里给我一些提示会很好!
谢谢
【问题讨论】:
-
你为什么这么讨厌
np.bytes_? -
旁白:根据我的经验,当人们想要将文本和数字都放入一个 numpy 数组时,他们通常最好使用
pandasDataFrame。 -
@zhangxaochen - 如果我没记错的话(目前无法在 python3 上测试),将列作为字节将不允许您使用 numpy 的矢量化字符串操作。不过我可能记错了。
标签: python numpy genfromtxt