Python 处理两个numpy数组时发生ValueError
我想从多对alpha和beta的beta分布中取样。 因此,我在数组Python 处理两个numpy数组时发生ValueError,python,numpy,Python,Numpy,我想从多对alpha和beta的beta分布中取样。 因此,我在数组a和b中加载了这些alpha和beta,并尝试如下并行计算: >>> a = np.array([1,2,3,4,5]) >>> b = np.array([3,2,4,2,6]) >>> import random >>> random.betavariate(a+1,b+1) Traceback (most recent call last): Fi
a
和b
中加载了这些alpha和beta,并尝试如下并行计算:
>>> a = np.array([1,2,3,4,5])
>>> b = np.array([3,2,4,2,6])
>>> import random
>>> random.betavariate(a+1,b+1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/random.py", line 679, in betavariate
y = self.gammavariate(alpha, 1.0)
File "/usr/lib/python3.8/random.py", line 564, in gammavariate
if alpha <= 0.0 or beta <= 0.0:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
成功了吗?那么,我是否必须显式地使用map来调用alpha-beta对列表中的random.betavariate()
?如果是,它会比numpy并行化慢吗?事实上,有可能正确实现我的第一个代码,使numpy并行计算它们吗
PS:I am python 3.8.2请改用numpy中的random
从numpy.random导入默认值\u rng
rng=默认值
a=np.数组([1,2,3,4,5])
b=np.数组([3,2,4,2,6])
收益率β(a+1,b+1)
打电话时如何设置种子默认值\u rng
?像这样:np.random.default\u rng(seed=1)
?还有它与numpy.random.beta
有何不同?你是对的。
>>> list(map(lambda x,y : random.betavariate(x,y),a,b))
[0.06403096830025037, 0.48396460498711924, 0.2652080357595285, 0.4468980529245114, 0.8550096603254491]