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])
使其与循环版本匹配。
我对 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])
使其与循环版本匹配。