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

时间:2019-11-15 07:18:19

标签: python arrays numpy dictionary indexing

我有一个如下数组:

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,这样我就可以使用减小尺寸的数组,可以更轻松地使用它—原始字符串会很有用,但不会牺牲尺寸/速度/ ease。

1 个答案:

答案 0 :(得分:3)

我们可以将np.uniquereturn_inverse arg一起使用-

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])
相关问题