Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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_Numpy_Where - Fatal编程技术网

Python 为什么';在哪里给我正确的答案?

Python 为什么';在哪里给我正确的答案?,python,numpy,where,Python,Numpy,Where,我试图估算穿过“墙”而未被反射或吸收的中子数量,但是,numpy。其中没有给出正确答案: import numpy as np Tabx = np.zeros(10) Tabcos = np.ones(10) actif = np.ones(10, dtype=bool) iActif = np.where(actif)[0] pa = 0 ps = 0 for i in range(15): iActif = np.where(actif)[0] r = np.random

我试图估算穿过“墙”而未被反射或吸收的中子数量,但是,
numpy。其中
没有给出正确答案:

import numpy as np

Tabx = np.zeros(10)
Tabcos = np.ones(10)
actif = np.ones(10, dtype=bool)
iActif = np.where(actif)[0]
pa = 0
ps = 0

for i in range(15):
    iActif = np.where(actif)[0]
    r = np.random.random(10)
    l = -1 * 0.2 * np.log(r[iActif])
    Tabx[iActif] += l * Tabcos[iActif]

    if np.where(Tabx[iActif] > 1)[0].size!=0:
        actif[np.where(Tabx[iActif] > 1)[0]]=False

    print("itération: ", i + 1)
    print(Tabx)
    print(actif)
    print(iActif)
只有当它开始出错时,我才会显示:

itération:  6
[ 1.34250751  1.22131969  0.61147827  0.72320522  1.18101783  0.2767469
  1.87170912  0.68726641  1.44933786  1.25179186]
[False False False False False False  True  True  True  True]
[3 6 7 8 9]

问题并没有停止。

这不是你的大问题的一部分,但这一块可以简化:

if np.where(Tabx[iActif] > 1)[0].size!=0:
    actif[np.where(Tabx[iActif] > 1)[0]]=False


但你还没有试图描述它应该做什么,也没有描述它到底做错了什么。我不知道“正确的一个”是什么。

到底是什么问题?看起来
iActif
actif
晚了一步。有时是,有时不是。你知道如何修复它吗?因为,我的问题是它没有给我正确的答案,因为它们没有超过1,所以当我继续我的代码时,它就不起作用了。现在我又读了一遍我的问题,我确实误解了我的问题。很抱歉错误的是,当Tabx的值超过1时,代码应该考虑true。抱歉,当Tabx的值超过1时,应该考虑false。
actif[ Tabx[iActif]>1] = False