Dsc*_*oni 2 python arrays indexing numpy slice
所以这是另一个n维数组问题:我希望能够将n维数组中的每个值与其邻居进行比较.例如,如果a是我希望能够检查的二维数组:
a[y][x]==a[y+1][x]
Run Code Online (Sandbox Code Playgroud)
对于所有元素.所以基本上检查所有维度的所有邻居.现在我通过以下方式做到:
for x in range(1,a.shape[0]-1):
do.something(a[x])
Run Code Online (Sandbox Code Playgroud)
使用数组的形状,这样我就不会在边缘处遇到超出范围的索引.因此,如果我想在nD中对数组中的所有元素执行类似的操作,我确实需要n个for循环,这似乎是不整齐的.有没有办法通过切片这样做?有点像== a [:, - 1,:]还是我理解这完全错了?有没有办法告诉切片最后停止?还是会有另一种想法让事情以另一种方式发挥作用?蒙面阵列?迎接Joni
就像是:
a = np.array([1,2,3,4,4,5])
a == np.roll(a,1)
Run Code Online (Sandbox Code Playgroud)
返回
array([False, False, False, False, True, False], dtype=bool
Run Code Online (Sandbox Code Playgroud)
您也可以为更高的尺寸指定一个轴,但是正如其他人所说的那样,你需要以某种方式处理边缘,因为值环绕(你可以从名字中猜出)
有关2D中更全面的示例:
# generate 2d data
a = np.array((np.random.rand(5,5)) * 10, dtype=np.uint8)
# check all neighbours
for ax in range(len(a.shape)):
for i in [-1,1]:
print a == np.roll(a, i, axis=ax)
Run Code Online (Sandbox Code Playgroud)