gpt4 book ai didi

python - 使用 Numpy 或 Pandas 根据字符计数对字符串进行矢量化分割

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

有没有办法根据每个元素的字符数以矢量化方式分割 Numpy 数组?

输入:

In [1]: import numpy as np

In [2]: y = np.array([ 'USC00013160194806SNOW','USC00013160194806SNOW','USC00013160194806SNOW' ])

In [3]: y
Out[3]:
array(['USC00013160194806SNOW', 'USC00013160194806SNOW',
'USC00013160194806SNOW'],
dtype='|S21')

我希望数组的每个元素根据一定数量的字符进行分割。

所需输出:

In [3]: y
Out[3]:
array(['USC00013160', 'USC00013160',
'USC00013160'],
dtype='|S21')

我已经使用标准 python 循环执行了此操作,但我正在处理数百万个值,因此我试图找到最快的方法。

最佳答案

您可以使用与 y 的数据类型大小相同的数据类型创建 View ,该数据类型具有与所需部分相对应的子字段。例如,

In [22]: y
Out[22]:
array(['USC00013160194806SNOW', 'USC00013160194806SNOW',
'USC00013160194806SNOW'],
dtype='|S21')

In [23]: dt = np.dtype([('part1', 'S11'), ('part2', 'S6'), ('part3', 'S4')])

In [24]: v = y.view(dt)

In [25]: v['part1']
Out[25]:
array(['USC00013160', 'USC00013160', 'USC00013160'],
dtype='|S11')

In [26]: v['part2']
Out[26]:
array(['194806', '194806', '194806'],
dtype='|S6')

In [27]: v['part3']
Out[27]:
array(['SNOW', 'SNOW', 'SNOW'],
dtype='|S4')

请注意,这些都是 y 中相同数据的 View 。如果就地修改它们,您也就修改了y。例如,

In [32]: v3 = v['part3']

In [33]: v3
Out[33]:
array(['SNOW', 'SNOW', 'SNOW'],
dtype='|S4')

v3[1] 更改为 'RAIN':

In [34]: v3[1] = 'RAIN'

In [35]: v3
Out[35]:
array(['SNOW', 'RAIN', 'SNOW'],
dtype='|S4')

现在看到 y[1] 也发生了变化:

In [36]: y
Out[36]:
array(['USC00013160194806SNOW', 'USC00013160194806RAIN',
'USC00013160194806SNOW'],
dtype='|S21')

关于python - 使用 Numpy 或 Pandas 根据字符计数对字符串进行矢量化分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726031/

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