Numpy 切片结果不同于 for 循环

Numpy slicing result different than for loop

我对 Python 中的 numpy/slicing 有一些疑问。

谁能解释一下,为什么下面的 for 循环和切片方法不会产生相同的 B?

for n in range(1,N-1):
    B[n,i] = -(2*x[n,i] - x[n-1,i] - x[n+1,i])

B[1:N-2,i] = -(2*x[1:N-2,i] - x[0:N-3,i] - x[2:N-1,i])

因为右侧的范围不包含在内,我假设您必须将您的 numpy 代码更改为

B[1:N-1,i] = -(2*x[1:N-1,i] - x[0:N-2,i] - x[2:N,i])

使其与循环版本匹配。