AttributeError:'numpy.ndarray'对象没有属性'split'

时间:2016-10-12 21:52:27

标签: python numpy

我想回答以下问题 “一位同事在每一行都生成了一个带有一个DNA序列的文件。下载文件并使用numpy.loadtxt()将其加载到Python中。您需要使用可选参数dtype = str来告诉loadtxt()数据是由字符串组成。

计算每个序列的GC含量。 GC含量是G或C的碱基百分比(占总碱基对的百分比)。将每个序列的结果打印为“序列的GC含量为XX.XX%”,其中XX.XX是实际的GC含量。使用“格式化字符串”执行此操作。 “

导入dna序列文件并将它们连接在一起后,我现在想将字符串拆分为5个序列(对应于5行中的每一行),然后开始计算......

注意:这是文件来源: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)

我收到此错误消息: AttributeError:'numpy.ndarray'对象没有属性'split'

请帮助!!!

1 个答案:

答案 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)
相关问题