【发布时间】:2014-02-19 17:51:06
【问题描述】:
我有一个带有重复列的 numpy 数组:
import numpy as np
A = np.array([[1, 1, 1, 0, 1, 1],
[1, 2, 2, 0, 1, 2],
[1, 3, 3, 0, 1, 3]])
我需要找到那些重复的索引或类似的东西:
[0, 4]
[1, 2, 5]
我很难在 Python 中处理索引。我真的不知道要接近它。
谢谢
我尝试使用此函数首先识别唯一列:
def unique_columns(data):
ind = np.lexsort(data)
return data.T[ind[np.concatenate(([True], any(data.T[ind[1:]]!=data.T[ind[:-1]], axis=1)))]].T
但我无法从那里找出索引。
【问题讨论】:
-
你需要numpy的性能,还是纯python实现OK?
-
你已经接近了,你已经找到了所有独特的列。每个 True 值都是一个新组的起点。
ind有你想要的所有索引,但是通过索引 ind 你只是取一个值而不是全部。尝试在连续 True 之间取ind中的所有值。 -
谢谢大家。我认为那会做。我是 Python 新手;我来自 C++ 老派,我发现在 Python 中处理索引是不自然的。我使用 numpy 是因为我的数组非常大 [300000, 1000]