2012-07-26 55 views
3

如何优雅地处理numpy数组中的文本?NumPy数组中的矢量化字符串处理

我总是可以遍历数组,但是有一些魔术oneliner也可能吗? 我只是在学习python,并希望以一种看起来不错的方式来完成它。我想要什么

例如:

for y in data['filename']: 
first = 12 
last = y[1][12:].find('.') 
y= y[1][first+1:last+12] 
+2

NumPy的不是字符串处理。事实上,存储可变长度字符串的效率非常低。相反,你可能想用纯Python来做到这一点。 – 2012-07-26 11:51:02

+0

实际上,是否可以存储可变长度的字符串? – 2012-07-26 17:04:23

+0

@François - 作为一个对象数组,是的。 (尽管在这一点上,你最好用列表。) – 2013-05-12 17:03:51

回答

2

可以使用numpy.char.array(),例如:

from string import find 

import numpy as np 

a = np.char.array(['cmd.py', 'matrix.txt', 'print.txt', 'test.txt', 'testpickle.test', 'Thumbs.db', 'tmp.py', 'tmp.txt', 'tmp2.py']) 
find(a, '.py') 
#array([ 3, -1, -1, -1, -1, -1, 3, -1, 4]) 


np.char.array(a.split('.'))[:,0] 
#chararray(['cmd', 'matrix', 'print', 'test', 'testpickle', 'Thumbs', 'tmp', 'tmp', 'tmp2'], dtype='|S10')