首页 > 解决方案 > 创建具有不同值范围的多个随机 numpy 数组

问题描述

我有一个问题,所以我试图创建一个包含多个具有不同值范围的 2D 数组的 3D 数组,例如我可以这样做:

import numpy as np

np.random.seed(1)

arr = np.random.randint(1, 10, size = (2,2)) #Random 2D array with range of values (1, 10)
arr2 = np.random.randint(11, 20, size = (2,2)) #Random 2D array with range of values (11, 20)
...

然后通过这个创建3D数组

newarr = np.array([arr, arr2, ...])

我尝试这样做:

import numpy as np

np.random.seed(1)

n = 3

aux = []

for i in range (n):
    if i == 0:
        aux.append(rng4.randint(1, 10, size = (2, 2)))
    elif i == 1:
        aux.append(rng4.randint(11, 20, size = (2, 2)))
    elif i == 2:
        aux.append(rng4.randint(21, 30, size = (2, 2)))

newarr = np.array(aux)

输出是我想要的,但在任何一种情况下,如果我想要另一个值范围,我需要手动“添加”一个新值elif以提供另一个范围,有没有办法可以做到这一点?谢谢!

标签: pythonarraysnumpy

解决方案


这是一个简单的循环编程练习:

newarr = np.empty(shape=(2, 2, n))
for i in range (n):
    newarr[:,:,i] = rng4.randint(i * 10 + 1, i * 10 + 10,
                                 size = (2, 2))

推荐阅读