python - 从 0 到 99 的 Numpy 随机数组,包括两者

标签 python numpy random

我正在尝试创建一个大小为 (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.argpartionkth=2而不是 np.argsort .这应该更有效率。

关于python - 从 0 到 99 的 Numpy 随机数组,包括两者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66946748/

相关文章:

Python Pandas 使用另一列删除子字符串

python - 将 Python (numpy) 中的小图像精确调整为原始大小的倍数

python - 计算矩阵中小于一个值的所有值

python - 在python中实现特定的分布

java - 每天更新随机字符串

python - Matplotlib.pyplot.hist() 很慢

Python - 在 re.compile 开头使用 (?!...) 失败

python - 如何在 Golang 中运行外部 Python 脚本?

python - 如何计算一组线和一个点之间的(最小)距离?

javascript - 如何在 setInterval 函数中使用 Math.random 查找先前随机生成的数字?