我得到了這個函式來查找字串中的一些特定字符,如果找到它,它會在陣列中的那個位置添加一個值,例如:
def skew_array(text):
import numpy as np
skew = np.zeros(len(text))
for i in range(0, len(text)):
if text[i] == 'G':
skew[i] = 1
elif text[i] == 'C':
skew[i] -= 1
else:
skew[i] = 0
return np.insert(skew, 0, 0)
>> skew_array('gacaattagcaa'.upper())
array([ 0., 1., 0., -1., 0., 0., 0., 0., 0., 1., -1., 0., 0.])
我不確定這是否是正確的方法(在最后插入),或者是否有辦法在創建陣列時將第一個位置保持為零。
我感謝任何提示!謝謝你的時間。
PS - 我使用了一個串列,但它對更大字串中的記憶體非常不利!
uj5u.com熱心網友回復:
我認為改變陣列平面大小的函式非常慢,所以我會從一開始就創建更大的偏斜。你可以使用 dict 來避免 elif 湯
import numpy as np
def skew_array(text, dict_):
skew = np.zeros(len(text) 1)
for i, char in enumerate(text, start=1):
skew[i] = dict_.get(char, 0)
return skew
skew_dict={"G":1, "C":-1}
code='gacaattagcaa'.upper()
print(skew_array(code, skew_dict))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354266.html
上一篇:如何創建作為變數值陣列的變數?
