Rya*_*axe 28 python arrays numpy
所以在numpy数组中有内置函数来获取对角线索引,但我似乎无法弄清楚如何从右上角而不是左上角开始对角线.
这是从左上角开始的常规代码:
>>> import numpy as np
>>> array = np.arange(25).reshape(5,5)
>>> diagonal = np.diag_indices(5)
>>> array
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> array[diagonal]
array([ 0, 6, 12, 18, 24])
Run Code Online (Sandbox Code Playgroud)
所以如果我想要它返回,我该怎么用:
array([ 4, 8, 12, 16, 20])
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 36
有
In [47]: np.diag(np.fliplr(array))
Out[47]: array([ 4, 8, 12, 16, 20])
Run Code Online (Sandbox Code Playgroud)
要么
In [48]: np.diag(np.rot90(array))
Out[48]: array([ 4, 8, 12, 16, 20])
Run Code Online (Sandbox Code Playgroud)
其中两个,np.diag(np.fliplr(array))更快:
In [50]: %timeit np.diag(np.fliplr(array))
100000 loops, best of 3: 4.29 us per loop
In [51]: %timeit np.diag(np.rot90(array))
100000 loops, best of 3: 6.09 us per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10331 次 |
| 最近记录: |