如何使用 numpy 数组有效地执行多个元素交换?
How to effeciently perform multiple element swaps with a numpy array?
在一个包含 48 个元素的 numpy 数组中,我需要进行一系列交换。
34 -> 21 -> 42 -> 26 -> 34
36 -> 19 -> 44 -> 28 -> 36
39 -> 16 -> 47 -> 31 -> 39
其中 x -> y
表示索引 x 处的元素必须转到第 y 个索引。我正在尝试想出一种有效的方法来做到这一点,因为数字是随机的,这只是我需要进行的一系列交换之一。
例如:
给定以下数组
original = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
我要进行以下交换
1 -> 4 -> 6 -> 1
所以我最终得到
swapped = ['a', 'g', 'c', 'd', 'b', 'f', 'e', 'h']
所以第一个索引元素到第四个索引,第四个到第六个,第六个到第一个。
也许是这样的。
def swap(input, index):
start_index = index[0]
for next_index in range(1, len(index)):
input[start_index], input[next_index] = input[next_index] , input[start_index]
return(input)
if __name__ == '__main__':
input = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
index = [2,3,6,2]
output = swap(input, index)
print(output)
这可能是执行其中一个序列的最有效方法:
swaps = [34, 21, 42, 26, 34]
arr = np.arange(48)
from_idx = lst[:-1]
to_idx = lst[1:]
arr[to_idx] = arr[from_idx]
在一个包含 48 个元素的 numpy 数组中,我需要进行一系列交换。
34 -> 21 -> 42 -> 26 -> 34
36 -> 19 -> 44 -> 28 -> 36
39 -> 16 -> 47 -> 31 -> 39
其中 x -> y
表示索引 x 处的元素必须转到第 y 个索引。我正在尝试想出一种有效的方法来做到这一点,因为数字是随机的,这只是我需要进行的一系列交换之一。
例如: 给定以下数组
original = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
我要进行以下交换
1 -> 4 -> 6 -> 1
所以我最终得到
swapped = ['a', 'g', 'c', 'd', 'b', 'f', 'e', 'h']
所以第一个索引元素到第四个索引,第四个到第六个,第六个到第一个。
也许是这样的。
def swap(input, index):
start_index = index[0]
for next_index in range(1, len(index)):
input[start_index], input[next_index] = input[next_index] , input[start_index]
return(input)
if __name__ == '__main__':
input = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
index = [2,3,6,2]
output = swap(input, index)
print(output)
这可能是执行其中一个序列的最有效方法:
swaps = [34, 21, 42, 26, 34]
arr = np.arange(48)
from_idx = lst[:-1]
to_idx = lst[1:]
arr[to_idx] = arr[from_idx]