python将下三角矩阵补全成对称矩阵

# Author QFIUNE
# coding=utf-8
# @Time: 2022/4/18 12:25
# @File: 222.py
# @Software: PyCharm
# @contact: 1760812842@qq.com

import numpy

def square_mat_in_trilu_indices(n):
    '''Return a n x n symmetric index matrix, in which the elements are the
    indices of the unique elements of a tril vector
    [0 1 3 ... ]
    [1 2 4 ... ]
    [3 4 5 ... ]
    [...       ]
    '''
    idx = numpy.tril_indices(n)
    #print('numpy.tril_indices(4):',idx)
    #idx = (array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3]),
    #       array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3]))
    tril2sq = numpy.zeros((n,n), dtype=int)
    #print(numpy.arange(n*(n+1)//2)) #[0 1 2 3 4 5 6 7 8 9]
    tril2sq[idx[0], idx[1]] = tril2sq[idx[1], idx[0]] = numpy.arange(n*(n+1)//2)
    return tril2sq

file = 'D:/Project_QF/Amyloid_search/intermediate_file/222.txt'

li = []
with open(file, 'r') as fo:
    lines = fo.readlines()
    for line in lines:
        for i in line.split():
            li.append(float(i.strip()))

idx = square_mat_in_trilu_indices(20)
li = numpy.array(li)


save_dir = 'D:/Project_QF/Amyloid_search/id/'
numpy.savetxt(save_dir + 'hihihi' + '.txt',
                       li, fmt='%f', delimiter='\t')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值