python倒三角形每行奇数个_python – 沿着下三角形numpy数组的每一行翻转非零值...

这篇博客展示了如何在Python中沿着下三角形数组的每一行翻转非零值,利用`np.tril_indices_from`函数获取下三角形的行和列索引,并通过调整索引来实现元素翻转。这种方法同样适用于多维数组中的下三角形子矩阵。对于上三角矩阵,可以使用类似的方法,但通过从列索引中减去行索引来实现翻转。
摘要由CSDN通过智能技术生成

这个怎么样:

# row, column indices of the lower triangle of B

r, c = np.tril_indices_from(B)

# flip the column indices by subtracting them from r, which is equal to the number

# of nonzero elements in each row minus one

B[r, c] = B[r, r - c]

print(repr(B))

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

# [ 0.75, 0.25, 0. , 0. ],

# [ 0.7 , 0.2 , 0.1 , 0. ],

# [ 0.1 , 0.4 , 0.3 , 0.2 ]])

相同的方法将推广到由多个下三角形子矩阵组成的任意N维数组:

# creates a (200, 20, 4, 4) array consisting of tiled copies of B

B2 = np.tile(B[None, None, ...], (200, 20, 1, 1))

print(repr(B2[100, 10]))

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

# [ 0.25, 0.75, 0. , 0. ],

# [ 0.1 , 0.2 , 0.7 , 0. ],

# [ 0.2 , 0.3 , 0.4 , 0.1 ]])

r, c = np.tril_indices_from(B2[0, 0])

B2[:, :, r, c] = B2[:, :, r, r - c]

print(repr(B2[100, 10]))

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

# [ 0.75, 0.25, 0. , 0. ],

# [ 0.7 , 0.2 , 0.1 , 0. ],

# [ 0.1 , 0.4 , 0.3 , 0.2 ]])

对于上三角矩阵,您可以简单地从c中减去r,例如:

r, c = np.triu_indices_from(B.T)

B.T[r, c] = B.T[c - r, c]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值