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

2024-05-01 22:11:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想回答下列问题 “一位同事制作了一份文件,每行有一个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”属性

请帮忙!!!


Tags: 文件字符串numpydata序列gcdnasplit
1条回答
网友
1楼 · 发布于 2024-05-01 22:11:53

正如注释中所说:",".join(dna_data)不修改dna_data,它只返回一个字符串,您必须将其存储在其他变量中。像这样:

s = ",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=s.split(",",4)

更进一步:

(注意,您似乎对numpy还不熟悉:在下面的示例中,我假设dna_data有一个形状(5,)如果不是这样,您可以使用very basic slicing返回到该形状)

也就是说,使用该代码,您只需将数组转换为一个列表,然后放入5个不同的变量,因此,当您可以只在一行seq1,seq2,seq3,seq4,seq5 = dna_data中放入数组->;string->;list->;变量时,非常多。

我会更进一步:不要这样做!当您只需要使用dna_data[n]而不是任何seq*变量时,拥有多个变量有什么意义?前者更方便,并且允许无痛苦地做一些事情,比如用for循环遍历所有序列。例如:

for seq in dna_data: 
    print(seq)

相关问题 更多 >