在Python numpy ndarray中获取角点值

use*_*453 5 python numpy

我正在尝试访问numpy ndarray的角落值.我对方法论感到非常难过.任何帮助将不胜感激.

例如,从下面的数组我想要一个数组([1,0,0,5])或数组([[1,0],[0,5]])的返回值.

array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  5.],
       [ 0.,  0.,  5.,  5.]])
Run Code Online (Sandbox Code Playgroud)

Jai*_*ime 7

要为答案添加多样性,您可以获得角落项目的视图(而不是副本):

corners = a[::a.shape[0]-1, ::a.shape[1]-1]
Run Code Online (Sandbox Code Playgroud)

或者,对于通用的n维数组:

corners = a[tuple(slice(None, None, j-1) for j in a.shape)]
Run Code Online (Sandbox Code Playgroud)

这样做,您可以通过修改视图来修改原始数组:

>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> corners = a[tuple(slice(None, None, j-1) for j in a.shape)]
>>> corners
array([[0, 2],
       [6, 8]])
>>> corners += 1
>>> a
array([[1, 1, 3],
       [3, 4, 5],
       [7, 7, 9]])
Run Code Online (Sandbox Code Playgroud)

编辑啊,你想要一个角落值的平面列表...通常不能用视图实现,所以@ IanH的答案就是你要找的.


Ian*_*anH 6

怎么样

A[[0,0,-1,-1],[0,-1,0,-1]]
Run Code Online (Sandbox Code Playgroud)

A数组在哪里。