Ich habe einen Fehler, IndexError: nur ganze Zahlen, Slices (:), Ellipse (...), numpy.newaxis (None) und Integer oder Boolesche Arrays sind gültige Indizes. Ich mache Sound Recognition App. Mein Code istIndexError Kann int als Index verwendet werden?
import numpy as np
import pandas as pd
import scipy as sp
import pickle
from scipy import fft
from time import localtime, strftime
import matplotlib.pyplot as plt
from skimage.morphology import disk,remove_small_objects
from skimage.filter import rank
from skimage.util import img_as_ubyte
import wave
folder = 'mlsp_contest_dataset/'
essential_folder = folder+'essential_data/'
supplemental_folder = folder+'supplemental_data/'
spectro_folder =folder+'my_spectro/'
single_spectro_folder =folder+'my_spectro_single/'
dp_folder = folder+'DP/'
# Each audio file has a unique recording identifier ("rec_id"), ranging from 0 to 644.
# The file rec_id2filename.txt indicates which wav file is associated with each rec_id.
rec2f = pd.read_csv(essential_folder + 'rec_id2filename.txt', sep = ',')
# There are 19 bird species in the dataset. species_list.txt gives each a number from 0 to 18.
species = pd.read_csv(essential_folder + 'species_list.txt', sep = ',')
num_species = 19
# The dataset is split into training and test sets.
# CVfolds_2.txt gives the fold for each rec_id. 0 is the training set, and 1 is the test set.
cv = pd.read_csv(essential_folder + 'CVfolds_2.txt', sep = ',')
# This is your main label training data. For each rec_id, a set of species is listed. The format is:
# rec_id,[labels]
raw = pd.read_csv(essential_folder + 'rec_labels_test_hidden.txt', sep = ';')
label = np.zeros(len(raw)*num_species)
label = label.reshape([len(raw),num_species])
for i in range(len(raw)):
line = raw.iloc[i]
labels = line[0].split(',')
labels.pop(0) # rec_id == i
for c in labels:
if(c != '?'):
print(label)
label[i,c] = 1
ich diesen Code ausführen, ich in diesem Punkt label[i,c] = 1
den Fehler bekam. Ich versuchte label
Variable von print(label)
label
zu sehen ist wie
warn(skimage_deprecation('The `skimage.filter` module has been renamed '
[[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
...,
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]]
Ich denke, der Fehler bedeutet, ganze Zahlen, Scheiben (:), Auslassungszeichen (...), numpy.newaxis (None) und integer oder boolean kann nicht als Array-Indizes verwendet werden, aber ich habe Int in Array-Index viel Zeit, so dass ich nicht verstehen kann, warum dieser Fehler passiert. Debug sagte mir,
labels
Etiketten hat :: [ '?'].
c
von
for c in labels[i]:
hat '?', Ich kann wirklich nicht verstehen? type.Ich denke das? den Fehler verursachen, aber ich weiß nicht, wie ich das beheben kann. Wie kann ich das beheben?
'für c in Etiketten: ...', aber 'labels' ist eine Liste von Strings. Strings sind nicht in der Menge "* Ganzzahlen, Slices (:), Auslassungszeichen (...), numpy.newaxis (None) und Integer oder Boolean *". (Beachten Sie auch: 'np.zeros ((len (roh), num_species)' ist einfacher.) –
@AndrasDeak vielen Dank !! Welcher Teil ist np?Nullen ((len (roh), num_species)) das hast du mir gesagt? Wie kann ich das beheben? – user21063
Ich habe nur bemerkt, dass Ihre zwei Zeilen vor der for-Schleife in einer Zeile ausgeführt werden können, ohne umformen zu müssen. Was Ihr Problem anbetrifft: Ich weiß nicht, was Sie tun wollen, aber der Versuch, Zeichen als Nummernmatrix-Indizes zu verwenden, wird sicherlich nicht funktionieren. –