python - 获取numpy数组的对角线

标签 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])

如果我想让它返回,我该怎么做:

array([ 4,  8, 12, 16, 20])

最佳答案

In [47]: np.diag(np.fliplr(array))
Out[47]: array([ 4,  8, 12, 16, 20])

In [48]: np.diag(np.rot90(array))
Out[48]: array([ 4,  8, 12, 16, 20])

在这两者中,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

关于python - 获取numpy数组的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114333/

相关文章:

python - 获取 histogram2d 的每个 bin 中的频率

python - 在 PyPy3 中,在本地命名空间中编写代码比在全局命名空间中编写代码慢

arrays - 使用 VBA 过滤器函数时的性能注意事项

java - 如何在java中获取csv文件的行索引

python - 有人能够在 python 中使用 poppler new_from_data 吗?

python - 使用peewee连接mysql时得到 “TypeError: Connect() got multiple values for keyword argument ' db'”

arrays - Scala非连续子数组

python 错误: too many indices for array

python-3.x - 为什么np.std()和pivot_table(aggfunc=np.std)返回不同的结果

python - 最好使用元组或 numpy 数组来存储坐标