Полагаю, последний массив (batch_y) был создан из списка, который содержит пустые массивы различной длины.
У меня нет ваших данных, но следующий код выдает и batch_x
, и batch_y
как массивы объектов:
import numpy as np
x= np.random.randint(0, high = 10, size=[300,300])
y = np.array(np.random.randint(0, high = 10, size=300), dtype=np.float64)
id_list = np.random.randint(0, high = 10, size=20)
ids = id_list
x_data = []
y_data = []
for i in range(0,len(id_list)):
idx = np.where(ids==id_list[i])[0]
x_data.append(x[idx[0]:idx[-1]+1,:])
y_data.append(y[idx[0]:idx[-1]+1])
batch_size=64
W=5
idx_pt = np.random.randint(W,abs(len(x_data)),batch_size)
idx_t = [np.random.randint(0,abs(len(x_data[i])-W-1)) for i in idx_pt]
batch_x = np.array([x_data[idx_pt[i]][idx_t[i]:idx_t[i]+W,:] for i in range(0,len(idx_pt))])
batch_y = np.array([y_data[idx_pt[i]] for i in range(0,len(idx_pt))])
Причина в том, что y_data
уже содержит массивы различной длины:
>>> y_data[0]
array([0., 9., 9., 8., 2., 1., 7., 7., 8., 0.])
>>> y_data[1]
array([9., 9., 8., 2., 1., 7., 7., 8.])
>>> y_data[3]
array([8., 2., 1., 7., 7.])
>>> y_data[4]
array([2., 1., 7., 7., 8., 0., 0., 1.])
Пожалуйста, проверьте ваш входной фрейм данных и то, что вы фактически помещаете в x_data
и y_data
.