Python 标量与向量相乘的结果是错误的
我试图绘制一个二项分布,但我的代码表现出意外的行为,因此我将错误跟踪到这一部分,并将其放入一个单独的文件中。基本上,“N”与输出numpy数组的函数相乘的结果是错误的。然而,如果我翻转乘法的顺序,它会给出正确的结果,我无法理解为什么以及应该做什么来避免这个错误Python 标量与向量相乘的结果是错误的,python,arrays,numpy,Python,Arrays,Numpy,我试图绘制一个二项分布,但我的代码表现出意外的行为,因此我将错误跟踪到这一部分,并将其放入一个单独的文件中。基本上,“N”与输出numpy数组的函数相乘的结果是错误的。然而,如果我翻转乘法的顺序,它会给出正确的结果,我无法理解为什么以及应该做什么来避免这个错误 import numpy as np n = 24 N = 20000 p = 1/6 x = np.array([0,1,2,3,4,5,6,7,8]) def comb_array(n, array): from math
import numpy as np
n = 24
N = 20000
p = 1/6
x = np.array([0,1,2,3,4,5,6,7,8])
def comb_array(n, array):
from math import comb
return np.array([comb(n, elm) for elm in array])
print('\n comb_array(n, x) is', comb_array(n, x), '\n', sep='\n')
print('and N is', N, '\n')
print('N * comb_array(n,x) gives this result', ( N * comb_array(n,x) ), '\n', sep='\n')
print('N * comb_array(n,x) * p**x also gives this result', ( N * comb_array(n,x) * p**x ), '\n', sep='\n')
print('comb_array(n,x) * p**x * N gives all positive result', ( comb_array(n,x) * p**x * N ), '\n', sep='\n')
终端的输出为-
(基本)C:\Users\Naveen\Documents>python numpy\u bug.py
梳状阵列(n,x)为[12427620241062642504134596
346104 735471]
N是20000
N*comb_数组(N,x)给出了这个结果[20000 4800005520000 40480000 212520000 850080000 -1603047296 -1667854592 1824518112] N*comb_数组(N,x)*p**x也给出了这个结果[20000.
80000. 153333.33333333 187407.40740741 163981.48148148 109320.98765432 -34358.86694102 -5957.98536808 1086.27097622] 梳状阵列(n,x)*p**x*n给出所有正结果[20000.
80000. 153333.33333333 187407.40740741 163981.48148148 109320.98765432 57697.18792867 24727.36625514 8757.60888203] 正如您在前两次乘法中看到的,由于某些原因,存在负值,但第三次乘法似乎是正确的 此外,这仅在某些值为“n”时发生。n=24就是这样一个值