gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:18 24 4
gpt4 key购买 nike

我试图在不使用循环的情况下将 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

关于python - 重新排列 numpy 数组中行的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com