使用连续仅包含 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))
我建议您执行以下操作以获得您的结果。您想要一个全为零的数组,除了每行中的一个元素。
- 因此创建一个全为零的数组。
- 为每一行选择一个随机索引。
- 将随机索引处的值设置为随机值。
这是为您完成的代码片段:
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)
就像在主题中一样,我想生成一个形状为 (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))
我建议您执行以下操作以获得您的结果。您想要一个全为零的数组,除了每行中的一个元素。
- 因此创建一个全为零的数组。
- 为每一行选择一个随机索引。
- 将随机索引处的值设置为随机值。
这是为您完成的代码片段:
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)