考虑以下问题:我正在尝试为每个
假设:
然后是以下代码。
k
元素生成von mises分布的s
个样本,但对于k=0
(这是我的零假设,因此我希望它尽可能准确),会导致错误。我正在尝试通过给出一个较低的k
并随机化偏差方向来“捏造”它。假设:
import numpy as np
s = 1000
k = np.arange(10)
theta = np.zeros_like(k)
shp = (10,)
然后是以下代码。
import scipy.stats as stat
rpt = (s,) + tuple(np.ones_like(shp))
theta = np.tile(theta, rpt)
k_zero = np.logical_not(k)
theta[:, k_zero] = np.random.rand(np.sum(k_zero), s) * 2 * np.pi - np.pi
k[k_zero] = .001
ks = np.tile(k, rpt)
出现错误
Traceback (most recent call last):
File "<ipython-input-blah>", line 1, in <module>
theta[:, k_zero] = np.random.rand(np.sum(k_zero), s) * np.pi - np.pi / 2
ValueError: shape mismatch: value array of shape (1,1000) could not be broadcast to indexing result of shape (1,1000)
但是...那些形状是一样的。为什么我不能这么做呢?
编辑:如下所述 -
theta[:, k_zero] = np.random.rand(s, np.sum(k_zero)) * np.pi - np.pi / 2
工作正常。 这只是错误消息中的一个错误吗?
ValueError
确实非常令人困惑! - Alexander McFarlaneshape
所得到的结果。 - Daniel F