切换三角矩阵

时间:2018-03-26 12:05:23

标签: python numpy triangular numpy-ndarray

是否有一种简单的方法来转动三角矩阵。

import numpy as np
shape=(4,8) 

x3=np.ones(shape) 

for m in range(len(x3)):
    step = (m * int(2)+1) #per step of 2 zeros
    for  n in range(int(step), len(x3[m])):
        x3[m][n] = 0

给我这个矩阵:

array([[1., 0., 0., 0., 0., 0., 0., 0.],
       [1., 1., 1., 0., 0., 0., 0., 0.],
       [1., 1., 1., 1., 1., 0., 0., 0.],
       [1., 1., 1., 1., 1., 1., 1., 0.]])

我想将其切换为以下内容:

array([[0., 0., 0., 0., 0., 0., 0., 1.],
       [0., 0., 0., 0., 0., 1., 1., 1.],
       [0., 0., 0., 1., 1., 1., 1., 1.],
       [0., 1., 1., 1., 1., 1., 1., 1.]])

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:3)

来自numpy包的

np.flip可以解决问题:

A = array([[1., 0., 0., 0., 0., 0., 0., 0.],
           [1., 1., 1., 0., 0., 0., 0., 0.],
           [1., 1., 1., 1., 1., 0., 0., 0.],
           [1., 1., 1., 1., 1., 1., 1., 0.]])

np.flip(A, 1)
#returns what you want : 1 for vertical symetry

array([[0., 0., 0., 0., 0., 0., 0., 1.],
       [0., 0., 0., 0., 0., 1., 1., 1.],
       [0., 0., 0., 1., 1., 1., 1., 1.],
       [0., 1., 1., 1., 1., 1., 1., 1.]])