gpt4 book ai didi

python - numpy char.array 从字符串中获取字符集

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:36 26 4
gpt4 key购买 nike

这是我的 numpy.char.array

table = np.char.arrray([['/finance/stocks/overview?symbol=TMIN.NS&exchange=INSE'],
['/finance/stocks/overview?symbol=8KMS.BO&exchange=INB'],
['/finance/stocks/overview?symbol=ADRG.NS&exchange=INSE']],dtype='|S53')

如何获得以下所需的输出:

out = ['TMIN.NS','8KMS.BO','ADRG.NS']

使用table.find(".NS")我可以得到.NS在字符串中的索引位置。但我如何使用它来获得所需的输出?

In [69]: table.find(".NS")
Out[69]:
array([[36],
[-1],
[36],
...,
[36],
[36],
[36]])

基于简单索引的选择不起作用的原因是,整个字符串只是单个元素。数组的形状为(30L,1L)

我可以在各个字符串元素上使用 strregex 来获得所需的输出,但这需要对数组运行 for 循环。我怎样才能单独在 numpy 中做到这一点?谢谢。

编辑_1/这就是我如何通过索引获得结果,但我不能同时对整个数组执行此操作

table[0][0][32:38]
Out[75]: 'TMIN.N'

最佳答案

np.char 函数/方法不会加快速度太多 - 它们只是循环遍历元素并应用相应的字符串方法。

In [261]: timeit [astr.find(".NS") for astr in table.flat]
....
100000 loops, best of 3: 3.92 µs per loop
In [262]: timeit table.find(".NS")
....
100000 loops, best of 3: 11.6 µs per loop

因此定义一个简单的函数来隔离所需的子字符串(几个可能的路由之一),

def extract(astr):
astr=astr.split('?')[1].split('&')[0]
astr = astr.split('=')[1]
return astr

In [268]: [extract(astr) for astr in table.flat]
Out[268]: ['TMIN.NS', '8KMS.BO', 'ADRG.NS']
In [269]: timeit [extract(astr) for astr in table.flat]
100000 loops, best of 3: 8.98 µs per loop

一般观察是,对于小数组/列表,列表理解路径通常比等效数组更快。数组操作随着大小的增加而变得更好。

关于python - numpy char.array 从字符串中获取字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com