如何使用numpy获取没有对角线的三角形上矩阵

刘先生

可以说我有以下矩阵:

A = np.array([
     [1,2,3],
     [4,5,6],
     [7,8,9]])

如何有效地提取没有对角线的上三角矩阵?输出将是以下数组:

B = np.array([2,3,6])
迪卡卡

一种掩盖方法-

def upper_tri_masking(A):
    m = A.shape[0]
    r = np.arange(m)
    mask = r[:,None] < r
    return A[mask]

另一个np.triu_indices-

def upper_tri_indexing(A):
    m = A.shape[0]
    r,c = np.triu_indices(m,1)
    return A[r,c]

样品运行-

In [403]: A
Out[403]: 
array([[79, 17, 79, 58, 14],
       [87, 63, 89, 26, 31],
       [69, 34, 90, 24, 96],
       [59, 60, 80, 52, 46],
       [75, 80, 11, 61, 47]])

In [404]: upper_tri_masking(A)
Out[404]: array([17, 79, 58, 14, 89, 26, 31, 24, 96, 46])

运行时测试-

In [415]: A = np.random.randint(0,9,(5000,5000))

In [416]: %timeit upper_tri_masking(A)
10 loops, best of 3: 64.2 ms per loop

In [417]: %timeit upper_tri_indexing(A)
1 loop, best of 3: 252 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何提取 R 中对称矩阵的上三角形,不包括对角线值(全部为 0)

如何在r中保持下三角形加对角线

用 -infinity - Python 填充 Numpy 数组的下三角形(包括对角线)

如何合并上下三角形,同时添加 1s 的对角线

使用CSS将矩形沿对角线分为2个三角形

NumPy-创建具有对角线幂的上三角矩阵

如何在两个三角形之间正确混合颜色并消除对角线拖尾

使用RcppArmadillo用向量填充上三角矩阵(包括对角线)

numpy数组到三角形(矩阵)

有没有办法使用 CSS 用楔形/三角形装饰线端?

如何删除两个斜对角的css斜角三角形之间的线?

如何在Flutter中绘制带有尖头三角形的线?

如何使用循环中的线填充三角形

如何使用OpenGL ES绘制具有不同变换矩阵的多个三角形?

将具有NumPy矩阵不同值部分的上三角形和下三角形提取到2列熊猫中

C++ OpenGL:三角形没有出现在屏幕上

如何提取非方形 numpy 数组的下/上三角形?

如何使用JavaFX创建三角形?

如何使用 Tailwind 制作三角形?

使用LINQ获取三角形将返回空三角形

使用三角形的坐标获取三角形的共享边

我如何在没有外部库的情况下使用python找到三角形的外心?

如何从MeshGeometry3D获取所有三角形?

沿列按以下顺序展平numpy数组:下三角,对角线,上三角

如何使用三角形顶点坐标(每个三角形有 9 个数字)在 matplotlib 中绘制 3d 三角形?

如何在带有阴影的窗体上制作三角形?

如何使用 OpenGL 在屏幕上显示三角形?

如何在任何给定的三角形上使用匹克定理

如何删除上三角中数据框的所有值,包括熊猫中的对角线值?