numpy 如何在所选列索引内移动ndarray/pandas Dataframe 行,同时保留其他列

dauxcl2d  于 2022-12-23  发布在  其他
关注(0)|答案(2)|浏览(153)

我有一个数组:

a = np.array([[1,3,9,8,4],
              [2,4,6,1,9],
              [7,3,0,5,8],
              [1,6,9,2,4]])

我想随机选择3列,并在这些列中随机移动元素(将它们保留在同一行中)。
例如,如果column_indices = [0,2,3],则新数组将为:

a = np.array([[8,3,1,9,4],
              [1,4,6,2,9],
              [0,3,5,7,8],
              [1,6,2,9,4]])

我该怎么做?谢谢

vxf3dgd4

vxf3dgd41#

您可以在切片上使用numpy.random.shuffleshuffle作用于第一个轴,这是您想要的):

# shuffle in place
np.random.shuffle(a[:, [0,2,3]])

# see changes
print(a)

输出:

[[1 3 9 8 4]
 [2 4 6 1 9]
 [7 3 0 5 8]
 [1 6 9 2 4]]
4dbbbstv

4dbbbstv2#

要使用的完整代码:

column_indices = [0,2,3]

a = np.array([[1,3,9,8,4],
              [2,4,6,1,9],
              [7,3,0,5,8],
              [1,6,9,2,4]])

# transpose to switch from columns to rows
shuffled = a[:, column_indices].transpose()
np.random.shuffle(shuffled)

a[:, column_indices] = shuffled.transpose()
a

相关问题