Numpy多维数组从头到尾切片
Numpy multi-dimensional array slicing from end to first
来自 numpy 数组
a=np.arange(100).reshape(10,10)
我要获取数组
[[99, 90, 91],
[9, 0, 1],
[19, 10, 11]]
我试过了
a[[-1,0,1],[-1,0,1]]
但这反而给出了 array([99, 0, 11])
。我该如何解决这个问题?
a[[-1,0,1],[-1,0,1]]
这是错误的,这意味着您需要来自 row -1
、column -1
的元素,即 (99)
和 row 0
、column 0
即 (0)
和 row 1
,column 1
即 (11)
这就是你得到 array([99, 0, 11])
的原因
你的答案:
a[ [[-1],[0],[1]], [-1,0,1] ]
:这意味着,我们想要第 -1, 0, 1
行的每个元素来自第 [-1], [0], [1]
.
行
将数组滚动到两个轴上并切片 3x3:
>>> np.roll(a, shift=1, axis=[0,1])[:3, :3]
array([[99, 90, 91],
[ 9, 0, 1],
[19, 10, 11]])
将切片分成两个单独的操作
arr[ [ -1,0,1] ][ :, [ -1,0,1]]
# array([[99., 90., 91.],
# [ 9., 0., 1.],
# [19., 10., 11.]])
相当于:
temp = arr[ [ -1,0,1] ] # Extract the rows
temp[ :, [ -1,0,1]] # Extract the columns from those rows
# array([[99., 90., 91.],
# [ 9., 0., 1.],
# [19., 10., 11.]])
来自 numpy 数组
a=np.arange(100).reshape(10,10)
我要获取数组
[[99, 90, 91],
[9, 0, 1],
[19, 10, 11]]
我试过了
a[[-1,0,1],[-1,0,1]]
但这反而给出了 array([99, 0, 11])
。我该如何解决这个问题?
a[[-1,0,1],[-1,0,1]]
这是错误的,这意味着您需要来自 row -1
、column -1
的元素,即 (99)
和 row 0
、column 0
即 (0)
和 row 1
,column 1
即 (11)
这就是你得到 array([99, 0, 11])
你的答案:
a[ [[-1],[0],[1]], [-1,0,1] ]
:这意味着,我们想要第 -1, 0, 1
行的每个元素来自第 [-1], [0], [1]
.
将数组滚动到两个轴上并切片 3x3:
>>> np.roll(a, shift=1, axis=[0,1])[:3, :3]
array([[99, 90, 91],
[ 9, 0, 1],
[19, 10, 11]])
将切片分成两个单独的操作
arr[ [ -1,0,1] ][ :, [ -1,0,1]]
# array([[99., 90., 91.],
# [ 9., 0., 1.],
# [19., 10., 11.]])
相当于:
temp = arr[ [ -1,0,1] ] # Extract the rows
temp[ :, [ -1,0,1]] # Extract the columns from those rows
# array([[99., 90., 91.],
# [ 9., 0., 1.],
# [19., 10., 11.]])