Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代Numpy数组以获取random.normal生成器形状冲突_Python_Numpy_Pymc3 - Fatal编程技术网

Python 迭代Numpy数组以获取random.normal生成器形状冲突

Python 迭代Numpy数组以获取random.normal生成器形状冲突,python,numpy,pymc3,Python,Numpy,Pymc3,我试图从PyMc3模型(在本例中为350)的若干抽样平均值和标准偏差的正态分布中生成n个(在本例中为n=57)随机数。因此,我最终希望得到350个分布,每个分布57个长度。我确信这是一件直截了当的事情,我缺乏概念上的理解。输入为: prior_pc5 =pm.sample_prior_predictive(samples=350,model=model_5, var_names='μ','σ'],random_seed=21) n=57 prpc5_μ = np.a

我试图从PyMc3模型(在本例中为350)的若干抽样平均值和标准偏差的正态分布中生成n个(在本例中为n=57)随机数。因此,我最终希望得到350个分布,每个分布57个长度。我确信这是一件直截了当的事情,我缺乏概念上的理解。输入为:

 prior_pc5 =pm.sample_prior_predictive(samples=350,model=model_5,
    var_names='μ','σ'],random_seed=21)

    n=57

    prpc5_μ = np.asarray(prior_pc5['μ'])
    prpc5_σ = np.asarray(prior_pc5['σ'])

for x,y in np.nditer([prpc5_μ,prpc5_σ]):
    y_prpc5 = np.random.normal(prpc5[:,0],prpc5[:,1], size=n)
输出为:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-180-90195f458d14> in <module>
      1 for x,y in np.nditer([prpc5_μ,prpc5_σ]):
----> 2     y_prpc5 = np.random.normal(prpc5[:,0],prpc5[:,1], size=n)

mtrand.pyx in numpy.random.mtrand.RandomState.normal()

_common.pyx in numpy.random._common.cont()

_common.pyx in numpy.random._common.cont_broadcast_2()

__init__.pxd in numpy.PyArray_MultiIterNew3()

ValueError: shape mismatch: objects cannot be broadcast to a single shape
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
np.nditer([prpc5μ,prpc5σ])中x,y的值为1:
---->2 y_prpc5=np.随机.正常(prpc5[:,0],prpc5[:,1],大小=n)
numpy.random.mtrand.RandomState.normal()中的mtrand.pyx
_numpy.random中的common.pyx.\u common.cont()
_numpy.random.中的common.pyx.\u common.cont\u broadcast\u 2()
__numpy.PyArray\u MultiIterNew3()中的init_uuuuuuuuuuuuuuuuuuuuuux.pxd
ValueError:形状不匹配:无法将对象广播到单个形状

感谢你能提供的任何教化

您的
nditer
循环对您没有任何帮助。您甚至不使用
x,y
变量。
prpc5
变量未定义。没有人试图累积
y_prpc5

如果您需要迭代某些内容,请从简单的迭代开始。不要尝试使用
nditer
(除非您能阅读并理解其所有文档)。它不会更快,更难正确使用

但是错误与
nditer
无关

np.random.normal(prpc5[:,0],prpc5[:,1], size=n)
不使用任何迭代变量

带标量参数的大小:

In [63]: np.random.normal(1,2,size=57)                                                         
Out[63]: 
array([-0.15095176,  0.68354153,  0.64270214,  1.71539129,  3.82930345,
       -0.93888021,  0.34013012,  4.7390541 ,  1.95647694, -0.02787572,
        0.53790931,  3.64859278, -2.66455301, -1.81567149,  2.62141742,
       -0.22887411, -0.36284743,  2.92298403,  1.87943503,  2.12060767,
       -1.10172555,  0.04234386,  0.48707306,  5.66358341,  0.70659526,
       -0.74210809, -2.04678512, -0.16496427, -0.46041457,  0.50505178,
        1.66497518,  2.20486689,  1.83034991, -1.73740446, -3.117619  ,
        1.12649528,  2.58059286,  1.42897399,  2.37256695, -2.34670202,
        3.00318398,  2.78164509, -1.1329154 ,  4.06859674,  3.13266299,
       -0.35481326,  1.79429889,  1.71617491,  1.41543611,  0.9476942 ,
       -0.79856396, -0.83121952, -2.63145461,  0.13941223,  0.18895024,
        3.21956521, -2.75348353])
大小为的数组/列表参数:

In [64]: np.random.normal([1,2],[1,1],size=57)                                                 
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-64-9a493d59b8d2> in <module>
----> 1 np.random.normal([1,2],[1,1],size=57)

mtrand.pyx in numpy.random.mtrand.RandomState.normal()

_common.pyx in numpy.random._common.cont()

_common.pyx in numpy.random._common.cont_broadcast_2()

__init__.pxd in numpy.PyArray_MultiIterNew3()

ValueError: shape mismatch: objects cannot be broadcast to a single shape

为什么要使用
nditer
?互联网站鼓励nditer遍历数组。prpc5在完整的代码中定义,但为了简洁起见,我省略了它。在任何情况下,当我将prpc5 dict转换为单个阵列时,我有两个长度为350的1D阵列。为了澄清,我想从正态分布生成350个样本,每个样本长度为57。我将如何使用np.random.normal进行此操作?
In [65]: np.random.normal([1,2],[1,1],size=2)                                                  
Out[65]: array([1.91404732, 2.79305575])