如果一个 Numpy Array 元素超出了我的限制,我想在 for 循环中删除它。如果元素超出限制并且 numpy delete 函数将其删除,则我的 for 循环范围的末尾 n 减少 1。但在 for 循环内它不会减少,并且出现以下错误。如何在不破坏 for 循环的情况下从 numpy 数组中删除元素?
IndexError: 索引 9 超出了轴 0 大小为 8 的范围
n=9
ucl=0 + (3 * 1/ np.sqrt(n))
lcl=0 - (3 * 1/ np.sqrt(n))
x=np.random.normal(0,1,size=n)
for i in range(0,n):
if (xbar[i]>ucl) | (xbar[i]<lcl):
xbar=np.delete(xbar, i)
n=n-1
答案 0 :(得分:0)
您的 n=n-1 指令缩进不正确。 您的解决方案必须是:
for i in range(0,n):
if (xbar[i]>ucl) | (xbar[i]<lcl):
xbar=np.delete(xbar, i)
n=n-1