[英]Perform element-wise operation on numpy string array
说我有一个像这样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 循环并使用矢量化操作。
有什么想法吗?
非常感谢
您可以使用熊猫库。 它使用 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.]
有一个集合 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
code. If the split occurs at the same point in each string , eg
a[:5],a[5:]`,我们可能可以进行一些 dtype 转换。
结果将是2d,对吗?
您可以使用 join 和 re.split
import numpy as np
import re
io = np.asarray(['hello world','hello Graz', 'hello all'])
print(re.split('[ -]', '-'.join(io)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.