我有一个表格列表:
['a b 1 2', 'c d 3 4']
我最终试图得到一个 4 个垂直的 numpy 数组。例如,['a','c']
和[1,2]
我对使用各种拆分函数、数组拆分等感到有些困惑。
超级菜鸟问题,这更像是一种尽可能有效地做到这一点的练习。
任何帮助将非常感激!
numpy 中没有将 python 字符串列表中的字符串直接拆分为单独数组的功能。如果这些字符串来自读取具有一致列数据类型的文本文件,请考虑使用numpy.genfromtxt
:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
编辑或者您可以强制您将数组转换为可以在他的回复np.genfromtxt
中读取为jterrace注释的格式。
您可以将其作为记录数组读取:
>>> A = ['a b 1 2', 'c d 3 4']
>>> from StringIO import StringIO
>>> import numpy
>>> s = StringIO('\n'.join(A))
>>> data = numpy.genfromtxt(s, dtype=[('letter1', 'S1'), ('letter2', 'S1'), ('num1', 'f8'), ('num2', 'f8')])
然后访问列:
>>> data['letter1']
array(['a', 'c'],
dtype='|S1')
>>> data['num1']
array([ 1., 3.])
请注意,这仅限于固定大小的字符串。不确定这是否是您的数据的问题。
A = ['a b 1 2', 'c d 3 4']
filter(lambda x:x[0].strip() or x[1].strip(),zip (*A))
#[('a', 'c'), ('b', 'd'), ('1', '3'), ('2', '4')]
虽然不是 numpy 数组
[编辑] 假设我理解了我不确定我所做的目标......