【发布时间】:2020-02-28 14:40:52
【问题描述】:
我有一个 6 列的多维数组,例如:
[59, '591', '592', '593', '594', 1582823720],
[9, '91', '92', '93', '94', 1582823745],
[7, '71', '72', '73', '74', 1582823745],
[61, '611', '612', '613', '614', 1582823752],
[54, '541', '542', '543', '544', 1582823717],
[24, '241', '242', '243', '244', 1582823706]
是否有一种简单的方法可以“垂直”地仅对特定列进行洗牌,同时保持其他列内容不变?
例如上面的例子,假设我只需要“垂直”打乱第 2-5 列,而将第 1 列和第 6 列保持原样,所以结果将是:
[59, '541', '242', '243', '74', 1582823720],
[9, '591', '542', '593', '94', 1582823745],
[7, '241', '612', '543', '614', 1582823745],
[61, '611', '92', '73', '544', 1582823752],
[54, '71', '72', '613', '594', 1582823717],
[24, '91', '592', '93', '244', 1582823706]
我是 Python 新手,也许有一个简单的内置解决方案或某个模块可以做到这一点?
我遇到了numpy 库,它使用random.shuffle() 函数可以“垂直”调整整个数组行变得轻而易举,也许有一个可以只调整特定列?
【问题讨论】:
-
对于矢量化解决方案:
a[:,1:5] = shuffle_along_axis(a[:,1:5], axis=0)from stackoverflow.com/a/55317373. -
@Divikar 在尝试使用
shuffle_along_axis函数时遇到TypeError: list indices must be integers or slices, not tuple错误... -
是的,我假设输入
a是一个数组,正如您在问题中提到的multidimensional array。
标签: python arrays numpy multidimensional-array shuffle