我想对Python列表的值进行编码以优化它,但是函数的中间缺少该值。在
我的环境如下。在
PC 1-不带GPU的Windows 10(64位)、Python 3.6.8(Python)、PyCharm 2018.1。在
PC 2-带GPU的Windows 10(64位)、Python 3.6.8(Python)、PyCharm 2019.1。在
我想从酶.txt'文件并将字符串数据转换为整数类型。但是,由于序列是一个字符串,所以我创建了一个函数,在转换为整数时创建并转换类似字典表的代码。但是,我不知道原因是什么,但是在x[I][j]中I=860,j=106时没有值,所以for循环停止,错误如下。在
import numpy as np
from keras.utils import np_utils
file = 'enzyme.txt'
def data(file):
f = open(file, 'r')
lines = f.readlines()
seq = []
ec = []
for i in range(0, len(lines)):
lines[i] = lines[i].strip('\n')
seq.append(lines[i][:-2])
ec.append(lines[i][-1])
f.close()
return seq, ec
x, y = data(file)
Amino_Acid_Scalar = {
'X': 0,
'A': 1,
'C': 2,
'D': 3,
'E': 4,
'F': 5,
'G': 6,
'H': 7,
'I': 8,
'K': 9,
'L': 10,
'M': 11,
'N': 12,
'P': 13,
'Q': 14,
'R': 15,
'S': 16,
'T': 17,
'V': 18,
'W': 19,
'Y': 20
}
def amino_acid_to_scalar(amino_acid):
if not amino_acid in Amino_Acid_Scalar:
return None
return Amino_Acid_Scalar[amino_acid]
def sequence_to_scalar(sequence):
scalar = [amino_acid_to_scalar(amino_acid) for amino_acid in sequence]
if None in scalar:
return None
return scalar
def sequences_to_scalar(sequences):
scalars = [sequence_to_scalar(sequence) for sequence in sequences]
return scalars
x = sequences_to_scalar(x)
for i in range(0, len(x)):
for j in range(0, len(x[i])):
#print(x[i][j], i, j)
#tmp = x[i][j]
#print(tmp)
#arr[i][j] = tmp
pass
y = np_utils.to_categorical(y, 7)
x = np.array(x)
y = np.array(y, dtype='int64')
在'酶.txt'文件,858到862列如下。在
^{pr2}$显示以下错误。在
Using TensorFlow backend.
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2018.1\helpers\pydev\pydev_run_in_console.py", line 53, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2018.1\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/Inyong/Documents/PycharmProjects/Test/Test_4_TXT.py", line 81, in <module>
for j in range(0, len(x[i])):
TypeError: object of type 'NoneType' has no len()
所以当我想知道它停在哪里的价值时
> x[860][106]
我得到以下错误。在
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'NoneType' object is not subscriptable
我真的很感谢你的帮助。在
你很好地解决了这个问题。你看到的是}。在
x = None
或者x[860]=None
,因为你不能有{我对整个代码的建议:
len(thing)
或{ord(base)-65
,那么你的映射就会更容易,而且这个代码可以缩短。在
可以用字典“get”方法替换此函数:
^{pr2}$其中“None”是您希望在没有键的情况下发回的默认值。(或者可以使用shortend版本
Amino_Acid_scalar.get(amino_acid)
,因为None是默认返回值)相关问题 更多 >
编程相关推荐