我知道很多人都问过这个错误,但我还没有找到任何对我有帮助的东西。在
这是我的代码:
def nanalyze(pupil, pw_sim):
import numpy as np
temp_s = abs(pw_sim)**2 * pupil
vals_x, vals_y = np.where(pupil > 0)
mask = pupil[vals_x[0]:vals_x[len(vals_x)-1], vals_y[0]:vals_y[len(vals_y)-1]]
s_i = (np.mean(temp_s[tuple(mask)]**2) / (np.mean(temp_s[tuple(mask)])**2)) - 1
return s_i
倒数第二行s_i = (np.mean(temp_s[tuple(mask)]**2) / (np.mean(temp_s[tuple(mask)])**2)) - 1
,返回索引错误:索引太多。在
pupil
和{(1024,1024)
的数组。temp_s
因此也是(1024,1024)
数组,mask
最后是(1023,1023)
数组。我试着让mask
a(1024,1024)
来检查我是否仅仅因为形状的不同而得到索引错误,但这似乎没有改变任何东西。在
你可能应该读一下numpy的advanced indexing,有时称为“花式索引”。在
从你的问题中不清楚你想用
temp_s[mask]
做什么。如果mask实际上是一个mask,那么您需要确保它具有dtypebool
,并且具有与temp_s
相同的形状。如果不是面具,你需要更好地解释你想做什么。在事实证明,简化和使用不同的语法解决了这个问题。现在,而不是
我有
^{pr2}$这个改动是我的导师做的,所以我不能完全解释它为什么起作用,但是我知道不再有任何错误,代码更容易阅读。我认为这是因为
pupil >0
的定义方式;在我最初的代码中,它有出错的空间,现在没有了。谢谢你的帮助。在相关问题 更多 >
编程相关推荐