属性错误:"numpy. ndarray"对象没有属性"split"

9rygscc1  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(530)

我试图回答以下问题:"一位同事制作了一个文件,每行有一个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"
请救救我!!!

kcrjzv8t

kcrjzv8t1#

正如评论中所说:",".join(dna_data)并不修改dna_data,它只是返回一个字符串,你必须把它存储在另一个变量中。

s = ",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=s.split(",",4)
    • 更进一步:**

(Note因为你似乎是新来的麻木:在下面我将假设dna_data的形状为(5,)。如果不是这样,您可以使用 * 非常基本的 * 切片返回到该形状。)
也就是说,在这段代码中,你只是把数组转换成一个列表,然后放入5个不同的变量,所以当你可以在一行中使用数组-〉字符串-〉列表-〉变量时,使用数组-〉字符串-〉列表-〉变量是非常多余的seq1,seq2,seq3,seq4,seq5 = dna_data.
我想更进一步:不要这样做!当你可以只使用dna_data[n]而不是任何一个seq*变量时,有几个变量有什么意义呢?前者更方便,允许无痛地做一些事情,比如用for循环遍历所有的序列。例如:

for seq in dna_data: 
    print(seq)

相关问题