我想从这段代码中消除低效的for循环。
我已经尝试过这个。
但它输出的是:
import numpy as np
x = np.zeros((5,5))
for i in range(5):
x[i] = np.random.choice(i+1, 5)
在保持给定输出的同时
[[0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 2. 2. 1. 0.]
[1. 2. 3. 1. 0.]
[1. 0. 3. 3. 1.]]
我已经尝试过这个。
i = np.arange(5)
x[i] = np.random.choice(i+1, 5)
但它输出的是:
[[0. 1. 1. 3. 3.]
[0. 1. 1. 3. 3.]
[0. 1. 1. 3. 3.]
[0. 1. 1. 3. 3.]
[0. 1. 1. 3. 3.]]
有没有可能去掉循环?如果不行,对于一个大数组和许多重复的情况,最有效的处理方式是什么?