【发布时间】:2020-11-27 20:04:27
【问题描述】:
我有一个字符串大小为 2 的数组,并希望在每一行中获取唯一的字符串。
np.__version__
# '1.19.2'
arr = np.array([['Z7', 'Q4', 'Q4'], # 2 unique strings
['Q4', 'Z7', 'Q4'], # 2 unq strings
['Q4', 'Z7', 'Z7'], # 2 unq strings
['Z7', 'Z7', 'Q4'], # 2 unq strings
['D8', 'D8', 'L1'], # 2 unq strings
['L1', 'L1', 'D8']], dtype='<U2') # 2 unq strings
保证每一行都包含相同数量的唯一字符串,即每行都有相同数量的唯一字符串,在我的例子中是 2。
预期输出:
array([['Q4', 'Z7'],
['Q4', 'Z7'],
['Q4', 'Z7'],
['Q4', 'Z7'],
['D8', 'L1'],
['D8', 'L1']], dtype='<U2')
在这里,每一行都已排序,但并非必须如此。两种方式都可以。
我的代码:
np.apply_along_axis(np.unique, 1, arr)
# array([['Q4', 'Z7'],
# ['Q4', 'Z7'],
# ['Q4', 'Z7'],
# ['Q4', 'Z7'],
# ['D8', 'L1'],
# ['D8', 'L1']], dtype='<U2')
我认为在轴 1 上的 np.unique 会给出预期的结果,但是
np.unique(arr, axis=1)
# array([['Q4', 'Q4', 'Z7'],
# ['Q4', 'Z7', 'Q4'],
# ['Z7', 'Z7', 'Q4'],
# ['Q4', 'Z7', 'Z7'],
# ['L1', 'D8', 'D8'],
# ['D8', 'L1', 'L1']], dtype='<U2')
我不明白到底发生了什么以及为什么它返回了这个确切的输出。
【问题讨论】:
标签: python numpy numpy-ndarray