numpy 如何将数组值赋给数组中的n-1个位置

sxpgvts3  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(99)

我有一个这样的数组:[1, 2, 3, 4, 5]。我 Shuffle 得到这个:[1, 5, 4, 2, 3]的值。

目标:将数组中的每个值分配到数组中的n-1个位置

换句话说,我需要数字1在第1位,2在第5位,3在第4位,2在第5位,3在第6位。
例如,这一个的输出将是:[1, 4, 5, 3, 2]的值。
有没有一个内置的函数或一个简单的代码可以实现这一目标?
到目前为止我所做的:

import numpy as np
import random
array = np.arange(1,6)
print(array)
random.shuffle(array)
print(array)

字符串

wwwo4jvm

wwwo4jvm1#

简单的一行程序来实现:

array[array-1] = np.arange(array.size)+1

字符串

ndh0cuux

ndh0cuux2#

假设你在range(1, len(a))中有所有的值,使用numpy索引:

a = np.array([1, 2, 3, 4, 5])
b = np.array([1, 5, 4, 2, 3])
# or for a shuffled array
# b = a.copy() ; np.random.shuffle(b)

out = np.zeros_like(a)
out[b-1] = a

字符串
输出:array([1, 4, 5, 3, 2])

相关问题