Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 标量与向量相乘的结果是错误的_Python_Arrays_Numpy - Fatal编程技术网

Python 标量与向量相乘的结果是错误的

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

我试图绘制一个二项分布,但我的代码表现出意外的行为,因此我将错误跟踪到这一部分,并将其放入一个单独的文件中。基本上,“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 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 480000
5520000 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就是这样一个值