Как использовать функцию нормального распределения NumPy в двумерном массиве? - PullRequest
0 голосов
/ 09 июля 2020

Могу ли я выполнить векторную операцию с использованием функции нормального распределения NumPy в массиве 2D NumPy так же, как я бы сделал с python for-l oop? Как это можно сделать?

Кажется, я не могу получить тот же результат, что и подход for-l oop с функцией numpy .normal (). В настоящее время я повторяю список [1, 2, 3] в номере массива, чтобы проверить свой результат. Внутри массива могут быть разные списки. Ниже мой тестовый сценарий.

Python тестовый сценарий:

import numpy as np
from numpy.random import MT19937
from numpy.random import RandomState, SeedSequence

number2 = np.array( [[1, 2, 3], [1, 2, 3], [1, 2, 3]], dtype='uint16' )

print( f'\nmu2 = {mu2}')
print( f'sigma2 = {sigma2}')
print( f'number2 = {number2}\n')

print( f'Loop Approach:')
for n, i in enumerate( number2 ):
    rs = RandomState(MT19937(SeedSequence(seed)))
    print( rs.normal(size=i.sum()) )

print( f'\nNumPy Normal Function Approach:')
rs = RandomState(MT19937(SeedSequence(seed)))
samples2 = np.random.normal( size=(number2.shape[0], np.sum(number2, axis=1)[0]) )
print( f'samples2 = {samples2}')

Вывод:

number2 = [[1 2 3]
 [1 2 3]
 [1 2 3]]

Loop Approach:
[-1.83130774 -0.17735435  0.0382792  -0.40295163  0.00205133 -0.09432702]
[-1.83130774 -0.17735435  0.0382792  -0.40295163  0.00205133 -0.09432702]
[-1.83130774 -0.17735435  0.0382792  -0.40295163  0.00205133 -0.09432702]

NumPy Normal Function Approach:
samples2 = [[ 1.93374683  2.12548353 -0.81608979  0.01696984  0.63914223 -0.01650647]
 [ 0.22542085 -0.07496141 -1.59603393  0.27176325 -0.73825187 -2.01560195]
 [ 0.06105081 -1.63196436  0.13322808  0.63191806  0.519154   -0.32172233]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...