我得到一個錯誤, IndexError:只有整數,切片(:),省略號(...),numpy.newaxis(無)和整數或布爾數組是有效的索引。 我正在製作聲音識別應用程序。 我的代碼是IndexError可以將int用作索引嗎?
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
我運行此代碼, 我在這一點上label[i,c] = 1
得到了錯誤。 我試圖通過print(label)
label
看到label
變量是像
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.]]
我認爲,該錯誤意味着整數,切片(:),省略號(...),numpy.newaxis(無)和整數或布爾不能用作數組索引,但我把int放入數組索引很多時候,所以我不明白爲什麼會發生這個錯誤。 調試告訴我,
labels
具有標籤:: [ '?']。
c
的
for c in labels[i]:
有 '?',我真的不明白? type.I認爲這個?導致錯誤,但我不知道如何解決這個問題。 我該如何解決這個問題?
'在標籤C:...','不過是labels'字符串列表。字符串是不是在設置「*整數,切片(:),省略號(...),numpy.newaxis(無)和整數或布爾*」。 (另請注意:'np.zeros((LEN(原料),num_species))'是簡單的。) –
@AndrasDeak非常感謝你!哪一部分是np。你告訴我的零((len(raw),num_species))?我怎樣才能解決這個問題? – user21063
我只注意到for循環之前的兩行可以在一行中完成,而無需重新整形。至於你的問題:我不知道你想要做什麼,但試圖使用字符作爲numpy數組索引肯定是行不通的。 –