将字符串的numpy数组转换为索引数组

2024-05-03 04:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组如下:

strArray = np.array(['ab','abc','ab','bca','ab','m-2','bca'])

例如,这是一个带有短字符串的短数组,但请考虑字符串和数组实际上要长得多,重复次数多,占用的空间太大。你知道吗

是否有一个函数接受此数组并输出两个数组,一个是唯一字符串的字典,另一个是strArray,但带有整数标识符:

keyArray, intArray = some_function(strArray)
print(keyArray) # output: { 0:'ab', 1:'abc', 2:'bca', 3:'m-2' }
print(intArray) # output: [ 0, 1, 0, 2, 0, 3, 2 ]

在另一种情况下,我将只满足于intArray,这样我就有了一个更小的数组,我可以更轻松地使用它-原始字符串将是有用的,但不会牺牲大小/速度/轻松性。你知道吗


Tags: 函数字符串outputabnp空间数组次数
1条回答
网友
1楼 · 发布于 2024-05-03 04:17:27

我们可以用^{}return_inversearg-

In [16]: unq,tags = np.unique(strArray, return_inverse=True)

In [17]: dict(zip(range(len(unq)),unq))
Out[17]: {0: 'ab', 1: 'abc', 2: 'bca', 3: 'm-2'}

In [18]: tags
Out[18]: array([0, 1, 0, 2, 0, 3, 2])

相关问题 更多 >