小编Lj *_*nda的帖子

Numpy随机选择生成具有所有唯一值的2D数组

所以我想知道在使用np.random.choice每行具有唯一值的位置生成二维数组时是否存在更有效的解决方案.

例如,对于具有shape的数组(3,4),我们期望输出:

# Expected output given a shape (3,4)
array([[0, 1, 3, 2],
       [2, 3, 1, 0],
       [1, 3, 2, 0]])
Run Code Online (Sandbox Code Playgroud)

这意味着每行的值必须相对于列数是唯一的.因此对于每一行out,整数应该只在0到3之间.

我知道,我可以通过传递实现它Falsereplace论据.但我只能为每一行而不是整个矩阵.例如,我可以这样做:

>>> np.random.choice(4, size=(1,4), replace=False)
array([[0,2,3,1]])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这样做时:

>>> np.random.choice(4, size=(3,4), replace=False)
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

 File "<stdin>", line 1, in <module>
 File "mtrand.pyx", line 1150, in mtrand.RandomState.choice 
 (numpy\random\mtrand\mtrand.c:18113)
 ValueError: Cannot take a larger sample than population when 
 'replace=False'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为它试图绘制3 x 4 = 12样本,因为矩阵的大小没有替换,但我只给它一个限制4.

我知道我可以通过以下方式解决它for-loop:

 >>> …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

6
推荐指数
1
解决办法
1924
查看次数

标签 统计

arrays ×1

numpy ×1

python ×1