Python-Numpy-在不使用循环的情况下获取特定形状中的Numpy.random.normal值的列表



我是Python的新手,很好奇是否有一种方法可以在不使用这样的循环的情况下立即创建特定形状的numpy.random.normal值列表?

def get_random_normal_values():
i = 0
result = []
while i < 100:
result.append(np.random.normal(0.0, 1.0, (16, 16, 3)))
i = i + 1
return result

只需使用numpy.random.normal的大小参数即可定义所需阵列的最终形状:

result = np.random.normal(size=(100, 16, 16, 3)) # default parameters are loc=0.0, scale=1.0

您将获得一个数组,而不是数组列表,但这并不能删除功能(您仍然可以在其上循环(。如果这不符合您的需求,请使您的用例更加明确。

是的,当然有可能:

import numpy as np
def get_random_normal_values(n_samples: int,  size: tuple[int]) -> list[np.array]:
all_samples = np.random.normal(np.random.normal(0.0, 1.0, (n_samples, ) + size))
return list(all_samples)

生成(n_samples,m,n,o(形状的分布,其中(m,n、o(=大小(输入参数(。之后,我们";"压平";它被划分为长度为n_samples的列表,其中该列表的每个项都是形状(m,n,o(的数组。

试试这个:

np.random.normal(0.0, 1.0, (100, 16, 16, 3))

最新更新