1

我有一个表格列表:

['a b 1 2', 'c d 3 4']

我最终试图得到一个 4 个垂直的 numpy 数组。例如,['a','c'][1,2]

我对使用各种拆分函数、数组拆分等感到有些困惑。

超级菜鸟问题,这更像是一种尽可能有效地做到这一点的练习。

任何帮助将非常感激!

4

3 回答 3

1

numpy 中没有将 python 字符串列表中的字符串直接拆分为单独数组的功能。如果这些字符串来自读取具有一致列数据类型的文本文件,请考虑使用numpy.genfromtxt

http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

编辑或者您可以强制您将数组转换为可以在他的回复np.genfromtxt中读取为jterrace注释的格式。

于 2012-08-17T18:48:35.523 回答
1

您可以将其作为记录数组读取:

>>> 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.])

请注意,这仅限于固定大小的字符串。不确定这是否是您的数据的问题。

于 2012-08-17T19:14:38.310 回答
0
  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 数组

[编辑] 假设我理解了我不确定我所做的目标......

于 2012-08-17T18:04:05.393 回答