Почему, когда я использую «перемешивание», он перемешивает мои данные, но возвращает нули для большей части моего массива?

#python #shuffle

Вопрос:

Я пытаюсь перетасовать свои данные, которые я назвал new_array, но когда я это делаю, он возвращает массив X_shuffled того же размера, но с нулями. Я понятия не имею, почему, так как в моем new_array есть все значения, поэтому X_shuffled должен отображать массив с перетасованными сигналами.

Я вернулся к основам, просто построил два массива и использовал shuffle, и, как вы можете видеть, это сработало нормально.

 X=np.array([[1.1,2.2,3.3,4.4],[1.2,2.3,3.4,4.5],[2.1,2.2,2.3,2.4],[3.1,3.2,3.3,3.4],[4.1,4.2,4.3,4.4]])
print(X.shape)
y=np.array([0.1,0.2,0.2,3,4])
X_shuffle, Y_shuffle = shuffle(X,y)
 

Мой проблемный код прикреплен ниже.

   import numpy as np 
    from sklearn import preprocessing
    from sklearn.utils import shuffle
    from sklearn.model_selection import train_test_split
    import matplotlib.pyplot as plt


def frequency_labels(s_frequency):
    L = []
    for w, f2 in enumerate(s_frequency):
        l = " {} Hz".format(f2)
        print("f1=",f2)
        L.append(l)
    return L

def time_labels(time):
    H = []
    for r,t in enumerate(time):
        h = " {} s".format(t)
        H.append(h)
    return H

def gaussian_noise(increment,len_time):
    mean = 0
    standard_deviation = np.arange(0.5,2.2,increment) 
    ## want 8096 different noise signals of different standard deviations
    sd = standard_deviation.reshape(len(standard_deviation),1)
    noise = np.empty((len(sd), (len_time), (1)), dtype=np.float16)
     
    for t, value in enumerate(sd):
         
        noise[t] = np.random.normal(mean,value,len_time).reshape(len_time,1)
        
    return noise


max_freq = 50
s_frequency = np.arange(0,60,0.1) # range of frequencies
fs = 200
time = np.arange(0,5-(1/fs),(1/fs))
amplitude = np.empty((len(time)), dtype=np.float16)
len_time = len(time)
len_frequency = len(s_frequency)
array = np.empty((len(time)), dtype=np.float16)
increment = 0.1  #0.00021
L = frequency_labels(s_frequency)
H = time_labels(time)
k = 0 
noise = gaussian_noise(increment,len_time)
new_array = np.empty((len(s_frequency)*(len(noise)),len(time)),dtype=np.float16)
training_labels = []


for f1 in s_frequency:
      #amplitude of signal and adding the noise onto this 
      amplitude = np.sin(2*np.pi*f1*time).reshape(len(time),1)
      amplitude = np.add(noise,amplitude).reshape(len(noise),len(time))
   
     #Normalizing between -1 and 1
      for r in range(17):
        average = float(min(amplitude[r,:])   max(amplitude[r,:]))/2
        rangev = float(max(amplitude[r,:]) - min(amplitude[r,:]))/2
        new_array[k] = (amplitude[r,:] - average)/rangev
        
    
      for q in range(17):
         training_labels.append(f1)
        
      
      k = k   1
        
        
training_labels = np.array(training_labels).reshape((len(s_frequency)*len(noise)),)  
        
#shuffle the data
X_shuffled, Y_shuffled = shuffle(new_array.astype('float64'), training_labels,random_state=0) 
x_train, x_test, y_train, y_test = train_test_split(X_shuffled,Y_shuffled,test_size=0.2)
 

Есть какие-нибудь идеи, почему это происходит?