Должна работать простая индексация массива:
import numpy as np
m = np.array([[[0.4,0.5],[0.2,0.3]], [[0.8,0.1],[0.7,0.9]]])
my_id = np.array([[[1,2],[2,3]], [[3,1],[3,2]]])
mask = np.array([[[0,1],[1,0]], [[1,1],[1,1]]])
print(m[(mask != 0) & (my_id == 3)]) # [0.8 0.7]
print(m[(mask != 0) & (my_id == 3)].mean()) # 0.75
Кроме того, id
является встроенной функцией, поэтому не называйте переменную это. Это будет затенять встроенный.
В основном Вы получаете это предупреждение, потому что (неудивительно) iPhone является опасно низким на памяти. Это может обычно быть по одной из двух причин;
Для первого необходимо выполнить инструменты и исследовать выделения памяти. Это может действительно замедлить Ваше приложение (и требует дополнительной памяти), так попытайтесь тестировать области своего приложения по одному. Например, если у Вас есть несколько переключателей представлений между ними пару раз.
Для второго необходимо будет исследовать вещи, которые Вы делаете, который мог привести к выделениям памяти большой емкости. Например, если Вы пишете браузер Flickr, Вы, возможно, должны были бы сократить количество изображений, Вы загрузили в любом время, или свободный некоторые неиспользованные при получении этого предупреждения.
Это о единственных общих правилах, которые я могу предложить, не зная больше о Вашем приложении.
К сожалению, нет никакого реального пути (что я знаю о) получить числа для текущего выделения памяти от iPhone OS. Это делает действительно трудным изолировать области Вашего применения, которые являются непреднамеренно голодной памятью.
Существует много хороших статей для управления памятью в приложении для iPhone. Вот некоторые полезные ссылки.
Вещи необходимо в целом заботиться о
didReceiveMemoryWarning
и выпустите любые переменные, не используемыеapplicationDidReceiveMemoryWarning
как аудио/видео проигрывание, UIImagePickerController и т.д.ОТРЕДАКТИРУЙТЕ Это больше не применяется. imageNamed:
имел кэширующиеся проблемы до 3.x версии ОС. Проблема больше не существует, и необходимо использовать imageNamed: (делает дисплей Retina реализации легче),
imageNamed:
создать объекты UIImage.