python多维数组随机打乱
时间: 2023-07-03 22:07:43 浏览: 38
可以使用numpy库中的shuffle函数来打乱多维数组,示例如下:
```python
import numpy as np
# 创建一个3x3的多维数组
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 打乱数组
np.random.shuffle(arr)
print(arr)
```
输出结果可能为:
```
[[7 8 9]
[4 5 6]
[1 2 3]]
```
注意:使用shuffle函数会直接修改原数组,如果不想修改原数组,可以先复制一份再打乱。
相关问题
帮我写一段python多维数组随机打乱的例子
当我们需要对多维数组进行随机打乱时,可以使用NumPy库中的shuffle函数。这个函数可以对任何维度的数组进行随机排列,非常方便。
下面是一个简单的例子,假设我们有一个2x3的二维数组:
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Original array:")
print(arr)
```
输出结果:
```
Original array:
[[1 2 3]
[4 5 6]]
```
现在我们希望将这个数组随机打乱,可以使用shuffle函数:
```python
np.random.shuffle(arr)
print("Shuffled array:")
print(arr)
```
输出结果:
```
Shuffled array:
[[4 5 6]
[1 2 3]]
```
可以看到,原来的数组被随机打乱了。我们可以使用同样的方法对任意维度的数组进行打乱。
多维数组随机打乱
实现多维数组随机打乱可以使用Fisher-Yates洗牌算法,其步骤如下:
1. 从数组末尾开始,选取一个元素;
2. 在剩下的元素中随机选择一个位置,与当前位置互换;
3. 继续从数组末尾开始,重复步骤1和步骤2,直到所有元素都被遍历。
以下是一个示例代码实现:
```python
import random
def shuffle_array(arr):
# 获取数组的形状
shape = arr.shape
# 将多维数组转换为一维数组
arr_flat = arr.flatten()
# 从数组末尾开始,遍历数组并交换元素
for i in range(len(arr_flat)-1, 0, -1):
j = random.randint(0, i)
arr_flat[i], arr_flat[j] = arr_flat[j], arr_flat[i]
# 将打乱后的一维数组重新变形为多维数组
return arr_flat.reshape(shape)
```
其中,`arr.shape`可以获取数组的形状,`arr.flatten()`可以将多维数组转换为一维数组。最后使用`reshape`方法将打乱后的一维数组重新变形为多维数组。
阅读全文