使用连续仅包含 1 个非零值的随机数创建数组

Create array with random numbers that contains only 1 non zero value in a row

就像在主题中一样,我想生成一个形状为 (2x2x2) 的随机数组,其中每一行只能包含一个非零值,例如

x = [[[1 0]
      [0 3]]

      [7 0]
      [0 0]]]

没有

x = [[[1 6]
      [0 3]]

      [7 4]
      [2 3]]]

我尝试了典型的方法:

np.random.seed(42)
x = np.random.randint(0, 10, (2, 2, 2))

我建议您执行以下操作以获得您的结果。您想要一个全为零的数组,除了每行中的一个元素。

  1. 因此创建一个全为零的数组。
  2. 为每一行选择一个随机索引。
  3. 将随机索引处的值设置为随机值。

这是为您完成的代码片段:

import random
import numpy as np

# init array with 0's
x = np.zeros((2, 2, 2))

# loop over all rows
for i in range(len(x)):
    for j in range(len(x[i])):
        # pick a row index that will not be 0
        rand_row_index = random.randint(0, 1)
        # set that index to a random value
        x[i][j][rand_row_index] = random.randint(0, 10)