【问题标题】:How to create a random Matrix in Python without duplicating integers?如何在不复制整数的情况下在 Python 中创建随机矩阵?
【发布时间】:2021-03-26 14:50:55
【问题描述】:

我目前创建随机矩阵的解决方案是

matrix = np.random.randint(low=n, high=m, size=(x,y))

您知道不使用整数两次的解决方案吗? 谢谢

【问题讨论】:

标签: python numpy


【解决方案1】:

你可以使用np.random.choice

np.random.choice(5, 3, replace=False)
# Output:
array([3,1,0]) # random

【讨论】:

  • 我试过这个。但是怎么可能创建一个矩阵而不是一个数组呢?
  • 您可以将 size 参数作为表示矩阵维度的元组提供:np.random.choice(5, size=(3, 5), replace=False) 创建一个 3x5 矩阵。
【解决方案2】:

如果您不想使用随机选择,您可以随时从整数列表中随机弹出。

import numpy as np
# define values 
n = 0
m = 20 
x = 3
y = 4 

integer_list = [i for i in range(n, m)]  # assuming m is exclusive 
matrix = np.zeros((x,y))
for i in range(x):
    for j in range(y):
        matrix[i][j] = integer_list.pop(np.random.randint(0, len(integer_list)))

编辑:我无法让它与随机选择一起工作。当我使用随机选择时,它返回单个值,而不是值列表。 更有效的解决方案是简单地打乱列表。

import numpy as np
import random
# define values 
n = 0
m = 20 
x = 3
y = 4 

integer_list = [i for i in range(n, m)]  # assuming m is exclusive
random.shuffle(integer_list)
matrix = np.zeros((x,y))
for i in range(x):
    for j in range(y):
        matrix[i][j] = integer_list.pop()

【讨论】:

  • 在为大规模矩阵实现之前,根据 np.random.choice() 计时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2016-11-20
相关资源
最近更新 更多