生信小白杨阿云
2021-05-09 13:26
采纳率: 72.7%
浏览 18

python如何沿列堆叠不同维度的矩阵

我在创建不同长度RNA序列的独热编码,因为长度不同,所以不同序列生成的矩阵维度不同,但是我想沿列堆叠这些不同维度的矩阵,而这是np.vstack()函数不支持的,想问一下有什么方法可以解决这个问题吗?因为序列长度差异太大,所以我不想把短的序列补齐。

这是我所用的代码:

import numpy as np

seq = []

with open('rna.fa', 'r') as f:
    for line in f:
        if line[0] == '>':
            tokens = line[1:].split()
            sequence = tokens[-1].strip().upper()
            seq.append(sequence)
        else:
            pass
f.close()

print(len(seq))

def one_hot_encode(seq):
    mapping = dict(zip("ACGTN", range(5)))    
    seq2 = [mapping[i] for i in sequence]
    
    return np.eye(5)[seq2]

for i in range(1,5110):
    xi = one_hot_encode(seq[i])
    X = np.vstack((x,seq[i]))
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 天元浪子 2021-05-09 17:48
    已采纳

    对于NumPy的ndarray对象来说,不同长度的数组是无法垂直堆叠的。除了补齐长度,似乎没有更好的方法。

    打赏 评论

相关推荐 更多相似问题