Python中如何固定数组首尾元素并打乱其余元素?
如何在打乱NumPy数组时固定首尾元素?
解决代码
import numpy as np r2 = np.array([[54.3817864 , 53.42810469, 47.94544424, 53.63511598, 49.59728558, 49.6935623 , 50.70031442, 52.80854701, 50.18808714, 51.80017684, 51.85747597, 54.3817864 ]]) # 提取中间待打乱的元素(排除首尾) middle_elements = r2[0][1:-1] # 原地打乱中间元素 np.random.shuffle(middle_elements) # 重组数组:首元素 + 打乱后的中间元素 + 尾元素 result = np.array([np.concatenate([[r2[0][0]], middle_elements, [r2[0][-1]]])]) print(result)
步骤说明
- 拆分数组:通过切片
r2[0][1:-1]获取除首尾外的所有中间元素,这部分是我们需要打乱的内容。 - 打乱中间元素:使用
np.random.shuffle()对中间元素执行原地打乱,这个函数只会修改传入的数组,不会影响首尾元素。 - 重组数组:用
np.concatenate()将固定的首元素、打乱后的中间元素、固定的尾元素拼接成新数组,得到符合要求的结果。
原代码问题说明
原代码直接对r2[0]执行np.random.shuffle(),会打乱数组内所有元素,包括需要固定的首尾值。通过拆分-打乱-重组的方式,就能精准控制打乱范围,保证首尾元素位置不变。
内容的提问来源于stack exchange,提问作者user20032724
相关产品推荐
相关产品推荐

