为什么 numpy shuffle 不能循环工作?

问题描述 投票:0回答:1

提前非常感谢。 我有一个名为 X_test 的 numpy 数组 X_test.shape
(11829, 16, 9) 我正在尝试使用下面的代码对数组每个元素的第二列进行洗牌。然而,X_test_s 似乎没有被洗牌,我不明白为什么。

X_test_s=X_test.copy()
for i in range(len(X_test)):
    tempmat=X_test[i]
    temp2=tempmat[:,1]
    np.random.shuffle(temp2)
    tempmat[:,1]=temp2
    X_test_s[i]=tempmat

X_test[3][:,1] 数组([0.42449842, 0.15417107, 0.42766631, 0.48785639, 0.67159451, 0.56494192、0.44772967、0.64836325、0.2312566、0.13093981、 0.46462513、0.7001056、0.51953537、0.68637804、0.61034847、 0.57338965])

X_test_s[3][:,1] 数组([0.42449842, 0.15417107, 0.42766631, 0.48785639, 0.67159451, 0.56494192、0.44772967、0.64836325、0.2312566、0.13093981、 0.46462513、0.7001056、0.51953537、0.68637804、0.61034847、 0.57338965])

numpy numpy-ndarray shuffle
1个回答
0
投票

你可以

X_test_s = X_test.copy()
for i in range(len(X_test)):
    tempmat = X_test_s[i]
    temp2 = tempmat[:, 1].copy()  # Explicitly copy to avoid any reference issues
    np.random.shuffle(temp2)
    tempmat[:, 1] = temp2
    # X_test_s[i] = tempmat  # This is actually redundant
© www.soinside.com 2019 - 2024. All rights reserved.