重新排列numpy数组中的行条目

用户名

我试图不使用循环将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)上执行时会产生瓶颈。

谢谢!

CT Zhu

有趣的问题,+ 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章