Das Ziel dieses Codeabschnitts besteht darin, eine Liste von Wörterbüchern zu erstellen, ein bestimmtes Wörterbuch zu erstellen und die Werte dieses Wörterbuchs zu verwenden , um die Liste in ein numpy Array umzuwandeln und dies für alle 3399 Wörterbücher (len (X)) zu tun, die ich in den vorherigen Abschnitten meines Codes erstellt habe. Jeder Schritt dieses Prozesses glatt ging, bis ich zum letzten Teil bekamValueError: konnte kein Eingabearray von Shape (83) in Shape senden (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()))
Wenn diese Zeilen Code durchgeführt wird, wird der folgende Fehler erscheint:
ValueError: could not broadcast input array from shape (83) into shape (84)
Nun, die Lösung ganz offensichtlich scheint, Recht? Ändern Sie einfach die Dimensionen des initialisierten Arrays und alles wird behoben ... nicht ganz. Ändern der Dimensionen wie folgt ergibt ein sehr seltsames Ergebnis, das ich einfach nicht umgehen kann, egal was ich tue oder versuche.
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)
die Dimension des initialisierten Array ändern ändert irgendwie die Dimensionen meiner bereits vorgefertigte Array, das in die große 2D-Array-Struktur gesetzt werden muss.
Ich habe wirklich versucht, dieses Problem zu umgehen, jede mögliche Funktion die ich finden konnte, einschließlich Umbildung, Anhängen, verketten, Stapeln, ...
Es wäre eine massive Hilfe sein, wenn es eine Lösung für dieses Problem wäre/ein einfacher Weg, die Werte aus einer Liste von Wörterbüchern zu nehmen und sie in ein numpliges Array zu bringen.
Voll Code: Import numpy als np Import Pandas als pd aus Sammlungen Zähler Import Fackel aus Fackel Import autograd importieren, nn
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()))
der Ausgang für inputs_dict [0: 2] ergibt:
[{'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}]
Was ist in 'inputs_dict'? Könnten Sie eine Probe dieses Objekts geben? – alvas
[mcve] bitte ... – Julien
meine Vermutung ist, dass ein Dicts-Element 84 Begriffe hat und ein anderer 83 hat. Vergewissere dich, dass du die Quelle verstehst. – hpaulj