Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy数组中的矢量化字符串处理_Python_Arrays_String_Numpy - Fatal编程技术网

Python NumPy数组中的矢量化字符串处理

Python NumPy数组中的矢量化字符串处理,python,arrays,string,numpy,Python,Arrays,String,Numpy,如何优雅地处理numpy数组中的文本 我总是可以迭代数组,但是是否也有一些神奇的单行线呢? 我只是在学习python,我想用一种看起来也不错的方式来做 我想要的示例: for y in data['filename']: first = 12 last = y[1][12:].find('.') y= y[1][first+1:last+12] 您可以使用numpy.char.array(),例如: from string import find import numpy as np a

如何优雅地处理numpy数组中的文本

我总是可以迭代数组,但是是否也有一些神奇的单行线呢? 我只是在学习python,我想用一种看起来也不错的方式来做

我想要的示例:

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

您可以使用
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')

NumPy不用于字符串处理。事实上,它在存储可变长度字符串时效率很低。您可能希望在纯Python中执行此操作。实际上,甚至可以存储可变长度字符串吗?@François-作为对象数组,是的。(不过,在这一点上,你最好有一个列表。)@tarrasch-如果你想去掉文件名的扩展名,可以看看
os.path.splitext
。(类似地,如果您处理的是文件名/路径,请查看所有的
os.path
。)正如larsmans所建议的,对于numpy数组中的字符串,只需将它们视为列表并进行迭代即可
numpy
故意不提供矢量化字符串操作。@tarrasch您是否检查了下面的答案?