说我有一个类似于io = np.asarray(['hello world','hello Graz', 'hello all'])
的numpy数组。现在它的形状是io.shape (3,)
。我想对每个元素执行拆分。我知道这有效splituf = lambda i: np.asarray([item.split(" ",1) for item in i])
。因为现实应用程序将在更大的数组上,我想避免for循环并使用向量化操作。
有什么想法吗?
非常感谢
答案 0 :(得分:0)
您可以使用pandas库。它构建使用numpy,提供丰富的文档和精彩的操作,如数据透视,图形,元素操作,......很多
注意:pandas不是numpy的替代品。
以下是元素操作的一个特例
>>> sam = np.arange(15)
>>> print sam
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
>>> print pd.rolling_apply(sam, 2, lambda x: x[1] - x[0])
[ nan 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
答案 1 :(得分:0)
有一个集合nu py函数,它将Python str
操作应用于数组的元素
http://docs.scipy.org/doc/numpy/reference/routines.char.html
这包括np.char.split
。
在我有限的经验中,这些并不比列表理解快得多,因为它们仍然调用Python函数,而不是快速编译numpy
c code.
If the split occurs at the same point in each string , eg
a [:5],[5:]` ,我们或许可以做一些dtype转换。
结果将是2d,对吧?
答案 2 :(得分:0)
您可以使用join和re.split
import numpy as np
import re
io = np.asarray(['hello world','hello Graz', 'hello all'])
print(re.split('[ -]', '-'.join(io)))