我遇到的错误如下。
所有输入数组必须具有相同的形状
答案 0 :(得分:0)
您不是要剥离线。正常的DNA序列由A,G,C和T组成。您还考虑了\r
字符。您的输入是这样的:
CCGAGGGCTATGGTTTGGAAGTTAGAACCCTGGGGCTTCTCGCGGACACC\r
GAGTTTATATGGCGCGAGCCTAGTGGTTTTTGTACTTGTTTGTCGCGTCG\r
...
AATGTCGACCGAACTCCGCACTGCTGGCCCGGGCCTATATCGAGAGTGAC
因此,对于最后一行以外的其他行,编码器将生成形状为(50,5)的数组,因为该行中有5个不同的字符。对于最后一行,它将生成形状为(50,4)的数组,然后得到ValueError: all input arrays must have the same shape
。
要解决此问题,您可以在代码中的某个位置剥离序列。例如,这将起作用:
...
for sequence in sequences:
integer_encoded = integer_encoder.fit_transform(list(sequence.strip()))
...
编辑: 另外,对于没有全部使用A,G,C和T的行,您可以跳过该行:
...
for sequence in sequences:
sequence_list = list(sequence.strip())
if len(set(sequence_list)) != 4:
continue
integer_encoded = integer_encoder.fit_transform(sequence_list)
...
或者,您可以找到另一种方法来制作所有one_hot_encoded
数组的形状(50,4)。