0
内比较数组元素我有一个numpy的阵列numpy的:另一个阵列
X = [[1,2], [3,4], [5,6], [1,2], [5,6]]
我想要一个numpy的阵列Y = [1, 2, 3, 1, 3]
,其中[1,2]
由1
取代,[3,4]
取代2
等。这是一个非常大的(数以百万计)X.
直觉是Y[X == [1,2]] = 1
。但这没有用。
内比较数组元素我有一个numpy的阵列numpy的:另一个阵列
X = [[1,2], [3,4], [5,6], [1,2], [5,6]]
我想要一个numpy的阵列Y = [1, 2, 3, 1, 3]
,其中[1,2]
由1
取代,[3,4]
取代2
等。这是一个非常大的(数以百万计)X.
直觉是Y[X == [1,2]] = 1
。但这没有用。
直觉是
Y[X == [1,2]] = 1
。但这没有用。
下面是如何使其工作:
Y = np.empty(len(X), dtype=np.int)
Y[np.all(X == [1, 2], 1)] = 1
处理所有可能的值:
s = set(map(tuple, X))
r = np.arange(1, len(s) + 1) # or assign whatever values you want
cond = [np.all(X == v, 1) for v in s]
Y = np.dot(r, cond)
如何/那些人在那里搜索模式:'[1,2]' ,'[3,4]'等存储?或者你只有两种这样的模式? – Divakar
你有一个2D列表,并且在python级别,这很简单,但是既然你标记了'numpy',如果你的意思是'X'应该是一个numpy数组,那么这是不可能的。我的意思是你不能将2d数组转换成不确定的形状数组。 – Kasramvd
好点 - 我会改变这个问题,以表明它是一个numpy数组。搜索模式可以存储在一个单独的数组中,如果需要的话 - 那些数量很少(如20) –