我想回答以下问题 “一位同事在每一行都生成了一个带有一个DNA序列的文件。下载文件并使用numpy.loadtxt()将其加载到Python中。您需要使用可选参数dtype = str来告诉loadtxt()数据是由字符串组成。
计算每个序列的GC含量。 GC含量是G或C的碱基百分比(占总碱基对的百分比)。将每个序列的结果打印为“序列的GC含量为XX.XX%”,其中XX.XX是实际的GC含量。使用“格式化字符串”执行此操作。 “
导入dna序列文件并将它们连接在一起后,我现在想将字符串拆分为5个序列(对应于5行中的每一行),然后开始计算......
这是我的代码:
import numpy
dna_data=numpy.loadtxt("dna_sequences",dtype=str)
",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=dna_data.split(",",4)
我收到此错误消息: AttributeError:'numpy.ndarray'对象没有属性'split'
请帮助!!!
答案 0 :(得分:0)
正如评论中所述:",".join(dna_data)
不修改dna_data
,它只返回一个你必须存储在另一个变量中的字符串。像这样:
s = ",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=s.split(",",4)
更进一步:
(注意,你似乎对numpy不熟悉:在下面我假设dna_data
的形状为(5,)
,如果不是这样的话,你可以使用{恢复到那个形状{3}})
话虽如此,使用该代码,您只是将数组转换为列表,然后输入5个不同的变量,因此数组 - >字符串 - >列表 - >变量非常过分当你可以在一个简单的行中使用array->变量时:seq1,seq2,seq3,seq4,seq5 = dna_data
。
我会更进一步:不要这样做!当您只使用dna_data[n]
而不是任何seq*
变量时,有多个变量有什么意义?前者更方便,允许无痛地执行诸如使用for循环遍历所有序列之类的事情。例如:
for seq in dna_data:
print(seq)