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