#python #numpy
#python #numpy
Вопрос:
Существует две матрицы. Первая представляет собой матрицу данных с размером (85,7794,64), а вторая мигает с размером (85,7794). Я должен извлечь некоторые части данных в соответствии с мигающей матрицей при определенном условии, которое указано в приведенном ниже коде. Нет никаких сомнений в производительности условия, но когда я пытаюсь вставить извлеченные данные (с размером (20,64)) в предопределенную матрицу хранения с размером (85,3600,64) (3600, потому что 180 частей данных с размером (20,64) должны быть извлечены из данных, поэтому 180 * 20 = 3600) выдает ошибку, которая упоминается ниже. Спасибо, если кто-нибудь может помочь решить эту проблему.
ОШИБКА:
Ошибка значения: не удалось передать входной массив из формы (20,64) в форму (0,64)
storage_matrix = np.zeros((85,3600,64))
for i in range(0,84):
for j in range(0,7793):
t = j 1
s = j 20
if Flashing[i,j] == 0 and Flashing[i,t] == 1:
storage_matrix[i,j:s,:] = data[i,j:s,:]
Ответ №1:
Ваш диапазон для внутреннего цикла слишком велик. Рассмотрим, что происходит j>3600
во внутреннем цикле.
Когда вы говорите storage_matrix[i, j:s, :]
, и если j>3600
, код прерывается, потому что размер среднего измерения storage_matrix
равен 3600. Это возвращает пустой массив. Следовательно, вы видите нулевое измерение в своем сообщении об ошибке.
Не уверен, что вы пытаетесь здесь сделать, но, возможно, вы имели в виду 3600 во внутреннем цикле.
Комментарии:
1. Спасибо. но это не ответ, позвольте мне объяснить подробнее. я хочу извлечь 180 частей матрицы данных, длина каждой части которых равна 20, поэтому внутренний цикл должен проходить через всю матрицу данных, чтобы извлечь все 180 частей. я думаю, что проблема заключается в последней команде, которая не укладывает каждую из 180 частей ниже другой.