このコードの目的は、辞書のリストを取得し、特定の辞書を取得し、この辞書の値を使用してリストを作成することですリストを数値的な配列に変換し、これまでのコードの前のセクションで構築した3399の辞書(len(X))すべてに対してこれを実行します。私は最後の部分ValueError:入力配列をシェイプから(83)シェイプにブロードキャストできませんでした(84)
input_array = np.zeros([len(X),84])
for i in range(0,len(X)):
input_array[i,:] = np.array(list(inputs_dict[i].values()))
次の行のコードを実行することになったまで、このプロセスの各ステップは、スムーズに行ってきました、次のエラーが現れます:
ValueError: could not broadcast input array from shape (83) into shape (84)
まあ、解決策はかなり明白だが、右?初期化された配列の寸法を変更するだけで、すべてが固定されます。次のように次元を変更すると、私がやりたいことや試しても、バイパスできないような非常に奇妙な結果が得られます。初期化された配列の次元を変更する
input_array = np.zeros([len(X),83])
for i in range(0,len(X)):
input_array[i,:] = np.array(list(inputs_dict[i].values()))
ValueError: could not broadcast input array from shape (84) into shape (83)
は何とか大きな2Dアレイ構造に置かれる必要がある私のすでに既製の配列の次元を変更します。
私は本当に...、整形追加、連結、スタッキングなど、私は見つけることができるすべての可能な機能を使用して、この問題を回避する
を試してみました。この問題に対する解決策があるだろうかどうかは/巨大な助けになります辞書のリストから値を取り出し、それらを数が少ない配列にするより簡単な方法です。
フルコード:
X = pd.read_csv('PromoterTrain.csv', index_col=0).values.tolist()
y = pd.read_csv('SigmaTrain.csv', index_col=0).values.tolist()
def reverse_complement(dna):
complement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'}
return ''.join([complement[base] for base in dna[::-1]])
X = [''.join(x) for x in X]
X_comp = [reverse_complement(X[i]) for i in range(0,len(X))]
kmer_1 = ['A','T','G','C']
kmer_2 = ['AA', 'AT', 'AG', 'AC', 'TA', 'TT', 'TG', 'TC', 'GA', 'GT', 'GG',
'GC', 'CA', 'CT', 'CG', 'CC']
kmer_3 = ['AAA', 'AAT', 'AAG', 'AAC', 'ATA', 'ATT', 'ATG', 'ATC', 'AGA',
'AGT', 'AGG', 'AGC', 'ACA', 'ACT', 'ACG', 'ACC', 'TAA', 'TAT', 'TAG', 'TAC',
'TTA', 'TTT', 'TTG', 'TTC', 'TGA', 'TGT', 'TGG', 'TGC', 'TCA', 'TCT', 'TCG',
'TCC', 'GAA', 'GAT', 'GAG', 'GAC', 'GTA', 'GTT', 'GTG', 'GTC', 'GGA', 'GGT',
'GGG', 'GGC', 'GCA', 'GCT', 'GCG', 'GCC', 'CAA', 'CAT', 'CAG', 'CAC', 'CTA',
'CTT', 'CTG', 'CTC', 'CGA', 'CGT', 'CGG', 'CGC', 'CCA', 'CCT', 'CCG', 'CCC']
inputs_default = {'A':0,'T':0,'G':0,'C':0}
for i in range(0,len(kmer_2)-1):
inputs_default[kmer_2[i]] = 0
for i in range(0,len(kmer_3)-1):
inputs_default[kmer_3[i]] = 0
def count_kmers(seq, K):
return Counter(seq[start:start+K] for start in range(len(seq) - K))
inputs_dict = []
combined_1mers = {}
combined_2mers = {}
combined_3mers = {}
combined_1mers_revcomp = {}
combined_2mers_revcomp = {}
combined_3mers_revcomp = {}
for i in range(0,len(X)-1):
combined_1mers = count_kmers(X[i],1)
combined_2mers = count_kmers(X[i],2)
combined_3mers = count_kmers(X[i],3)
combined_1mers_revcomp = count_kmers(X_comp[i],1)
combined_2mers_revcomp = count_kmers(X_comp[i],2)
combined_3mers_revcomp = count_kmers(X_comp[i],3)
combined_kmers_forward =
{**combined_1mers,**combined_2mers,**combined_3mers}
combined_kmers_revcomp =
{**combined_1mers_revcomp,**combined_2mers_revcomp,**combined_3mers_revcomp}
combined_kmers = dict((n, combined_kmers_forward.get(n,
0)+combined_kmers_revcomp.get(n, 0)) for n in
set(combined_kmers_forward)|set(combined_kmers_revcomp))
inputs_dict.append(dict((n, inputs_default.get
input_array = np.zeros([len(X),84])
for i in range(0,len(X)):
input_array[i,:] = np.array(list(inputs_dict[i].values()))
inputs_dictための出力NN NP インポートパンダとして インポートnumpyのコレクションからPD トーチインポートautogradからカウンタ インポートトーチ をインポートするように、[0:2]が得られます。
[{'A': 28,
'AA': 10,
'AAA': 3,
'AAC': 3,
'AAG': 3,
'AAT': 1,
'AC': 6,
'ACA': 2,
'ACC': 0,
'ACG': 2,
'ACT': 2,
'AG': 4,
'AGA': 1,
'AGC': 0,
'AGG': 1,
'AGT': 2,
'AT': 8,
'ATA': 0,
'ATC': 4,
'ATG': 3,
'ATT': 1,
'C': 22,
'CA': 9,
'CAA': 3,
'CAC': 2,
'CAG': 1,
'CAT': 3,
'CC': 2,
'CCA': 1,
'CCG': 0,
'CCT': 1,
'CG': 6,
'CGA': 1,
'CGC': 3,
'CGG': 0,
'CGT': 2,
'CT': 4,
'CTA': 0,
'CTC': 0,
'CTG': 1,
'CTT': 3,
'G': 21,
'GA': 7,
'GAA': 3,
'GAC': 0,
'GAG': 0,
'GAT': 4,
'GC': 6,
'GCA': 1,
'GCC': 1,
'GCG': 3,
'GCT': 0,
'GG': 2,
'GGA': 1,
'GGC': 1,
'GGG': 0,
'GGT': 0,
'GT': 6,
'GTA': 1,
'GTC': 0,
'GTG': 2,
'GTT': 3,
'T': 29,
'TA': 2,
'TAA': 1,
'TAC': 1,
'TAG': 0,
'TAT': 0,
'TC': 7,
'TCA': 4,
'TCC': 1,
'TCG': 1,
'TCT': 1,
'TG': 9,
'TGA': 4,
'TGC': 2,
'TGG': 1,
'TGT': 2,
'TT': 10,
'TTA': 1,
'TTC': 3,
'TTG': 2,
'TTT': 3},
{'A': 26,
'AA': 8,
'AAA': 3,
'AAC': 1,
'AAG': 1,
'AAT': 3,
'AC': 4,
'ACA': 2,
'ACC': 1,
'ACG': 0,
'ACT': 1,
'AG': 6,
'AGA': 3,
'AGC': 2,
'AGG': 0,
'AGT': 1,
'AT': 8,
'ATA': 1,
'ATC': 2,
'ATG': 2,
'ATT': 3,
'C': 24,
'CA': 7,
'CAA': 1,
'CAC': 2,
'CAG': 2,
'CAT': 2,
'CC': 4,
'CCA': 1,
'CCG': 2,
'CCT': 0,
'CG': 6,
'CGA': 1,
'CGC': 3,
'CGG': 1,
'CGT': 0,
'CT': 6,
'CTA': 0,
'CTC': 3,
'CTG': 2,
'CTT': 1,
'G': 23,
'GA': 7,
'GAA': 2,
'GAC': 0,
'GAG': 3,
'GAT': 2,
'GC': 8,
'GCA': 2,
'GCC': 1,
'GCG': 3,
'GCT': 2,
'GG': 3,
'GGA': 1,
'GGC': 1,
'GGG': 0,
'GGT': 1,
'GT': 4,
'GTA': 1,
'GTC': 0,
'GTG': 2,
'GTT': 1,
'T': 27,
'TA': 4,
'TAA': 2,
'TAC': 1,
'TAG': 0,
'TAT': 1,
'TC': 7,
'TCA': 2,
'TCC': 1,
'TCG': 1,
'TCT': 3,
'TG': 8,
'TGA': 2,
'TGC': 2,
'TGG': 2,
'TGT': 2,
'TT': 8,
'TTA': 2,
'TTC': 2,
'TTG': 1,
'TTT': 3}]
'inputs_dict'には何がありますか?あなたはそのオブジェクトのサンプルを与えることができますか? – alvas
[mcve] please ... – Julien
私の推測では、1つのdicts要素には84語があり、もう1つは83語です。ソースを理解していることを確認してください。 – hpaulj