我试图回答以下问题:"一位同事制作了一个文件,每行有一个DNA序列,下载该文件并使用numpy.loadtxt()将其加载到Python中,需要使用可选参数dtype = str来告诉loadtxt()数据是由字符串组成的。
计算每个序列的GC含量。GC含量是G或C碱基的百分比(占总碱基对的百分比)。将每个序列的结果打印为"序列的GC含量为XX.XX %",其中XX.XX是实际的GC含量。使用"格式化字符串"完成此操作。
导入了dna序列文件并将它们连接在一起后,我现在想将字符串拆分为5个序列(对应于5行中的每一行),然后开始计算...
NB:这是文件源:http://www.programmingforbiologists.org/data/dna_sequences_1.txt
这是我的代码:
import numpy
dna_data=numpy.loadtxt("dna_sequences",dtype=str)
",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=dna_data.split(",",4)
我收到此错误消息:属性错误:"numpy. ndarray"对象没有属性"split"
请救救我!!!
1条答案
按热度按时间kcrjzv8t1#
正如评论中所说:
",".join(dna_data)
并不修改dna_data
,它只是返回一个字符串,你必须把它存储在另一个变量中。(Note因为你似乎是新来的麻木:在下面我将假设
dna_data
的形状为(5,)
。如果不是这样,您可以使用 * 非常基本的 * 切片返回到该形状。)也就是说,在这段代码中,你只是把数组转换成一个列表,然后放入5个不同的变量,所以当你可以在一行中使用数组-〉字符串-〉列表-〉变量时,使用数组-〉字符串-〉列表-〉变量是非常多余的:
seq1,seq2,seq3,seq4,seq5 = dna_data
.我想更进一步:不要这样做!当你可以只使用
dna_data[n]
而不是任何一个seq*
变量时,有几个变量有什么意义呢?前者更方便,允许无痛地做一些事情,比如用for循环遍历所有的序列。例如: