gpt4 book ai didi

arrays - 通过向前移动其他元素来改变数组中元素的位置 - NumPy

转载 作者:行者123 更新时间:2023-12-05 00:54:10 24 4
gpt4 key购买 nike

搜索后,我发现没有本地方法或当前解决方案可以有效地更改 numpy 数组中元素的位置,这在我看来是很自然的操作。例如,如果我想将第三个元素移动到第一个位置,它应该是这样的:

x = np.array([1,2,3,4,5])
f*(x, 3, 1)

print x
array([1,4,2,3,5])

我在这里寻找 f* 函数。这与滚动每个元素不同,对于大数组中的移动我想避免使用插入和删除操作可以使用的复制操作

最佳答案

不确定效率,但这是一种使用 masking 的方法——

def change_pos(in_arr, pick_idx, put_idx ):    
range_arr = np.arange(in_arr.size)
tmp = in_arr[pick_idx]
in_arr[range_arr != put_idx ] = in_arr[range_arr != pick_idx]
in_arr[put_idx] = tmp

这将支持向前和向后移动。

sample 运行

1) 元素向后移动 -
In [542]: in_arr
Out[542]: array([4, 9, 3, 6, 8, 0, 2, 1])
*
In [543]: change_pos(in_arr,6,1)

In [544]: in_arr
Out[544]: array([4, 2, 9, 3, 6, 8, 0, 1])
^

2) 元素向前发展 -
In [546]: in_arr
Out[546]: array([4, 9, 3, 6, 8, 0, 2, 1])
*
In [547]: change_pos(in_arr,1,6)

In [548]: in_arr
Out[548]: array([4, 3, 6, 8, 0, 2, 9, 1])
^

关于arrays - 通过向前移动其他元素来改变数组中元素的位置 - NumPy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332763/

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