我试图不使用循环将numpy数组A转换为B。
A=np.array([[1,2,3],
[1,3,0],
[2,0,0]])
B=np.array([[1,2,3],
[1,0,3],
[0,2,0]])
因此,在每一行中,我想使用它们的值作为索引对条目进行重新排序。(即,在第2行中[1,3,0]
,1是第一个条目,3是第三个条目,而0将填充为第二个条目以使其成为[1,0,3]
。
我可以对单个行执行此操作,以便可以遍历数组,但是我想查看是否存在一种无需循环的方法。我知道循环不会对像这样的小数组产生影响,但是我担心循环在大数组(1m,1m)上执行时会产生瓶颈。
谢谢!
有趣的问题,+ 1。
In [28]:
import numpy as np
A=np.array([[1,2,3],
[1,3,0],
[2,0,0]])
In [29]:
B=np.zeros(A.shape, 'int64')+np.arange(1, A.shape[0]+1)
In [30]:
np.where(np.asarray(map(np.in1d, B, A)), B, 0)
Out[30]:
array([[1, 2, 3],
[1, 0, 3],
[0, 2, 0]])
In [31]:
%timeit np.where(np.asarray(map(np.in1d, B, A)), B, 0)
10000 loops, best of 3: 156 µs per loop
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句