我正在尝试创建一个大小为 (80,10) 的 np 数组,因此每行都有范围为 0 到 99 的随机值。
我已经做到了
np.random.randint(99, size=(80, 10))
但我想始终在每一行中都包含 0 和 99 作为值。所以每行中的两个值已经定义,另外 8 个将是随机的。
我将如何做到这一点?有没有办法生成一个数组大小 (80,8) 并将 [0,99] 连接到每一行以使其最后成为 (80,10)?
最佳答案
正如 Tim 在评论中所建议的,您可以生成一个不包括 0
的随机值矩阵。和 99
.然后用值 0
替换沿第二个轴的两个随机索引和 99
.
rand_arr = np.random.randint(low=1, high=98, size=(80, 10))
rand_indices = np.random.rand(80,10).argsort(axis=1)[:,:2]
np.put_along_axis(rand_arr, rand_indices, [0,99], axis=1)
使用动机 argsort
是我们想要沿第二个轴的随机索引而无需替换。只需使用 size=(80,2)
生成值 0-10 的随机整数矩阵不会保证这一点。在你的场景中,你可以做
np.argpartion
与 kth=2
而不是 np.argsort
.这应该更有效率。
关于python - 从 0 到 99 的 Numpy 随机数组,包括两者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66946748/