【发布时间】:2017-08-05 07:41:38
【问题描述】:
这是我的 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")i可以得到.NS在字符串中的索引位置。但是我怎样才能使用它来获得所需的输出呢?
In [69]: table.find(".NS")
Out[69]:
array([[36],
[-1],
[36],
...,
[36],
[36],
[36]])
原因,简单的基于索引的选择不起作用是因为整个字符串只是单个元素。数组的形状是(30L,1L)
我可以在单个字符串元素上使用str 或regex 来获得所需的输出,但这需要在数组上运行for 循环。我怎么能单独在 numpy 中做到这一点?谢谢。
编辑_1/ 这就是我如何通过索引获得结果,但我不能同时在整个数组上这样做
table[0][0][32:38]
Out[75]: 'TMIN.N'
【问题讨论】:
-
您要查找的字符串是否总是
7字符?他们后面会不会总是跟着那个字符串'/finance/stocks/overview?symbol='? -
是的,在这种情况下,它们将遵循固定模式。
-
总是
7个字符? -
是的,要选择的字符串为 7 个字符。 (会有变化(最多 8 个字符,其中一些代码的长度为 5 而不是 4 个字符),但在这一点上,我将忽略它,因为它可能占整个数据集的 2% 左右)。跨度>
-
char函数(在本例中为chararray方法)只需将相应的string方法应用于数组的每个元素。与显式循环相比,它们并没有加快速度。我建议在列表理解中应用您自己的字符串操作。