Я предполагаю, что вы имеете в виду a < -100 or a > -100
, самый краткий способ заключается в использовании логической индексации.
a = a[(a >= -100) & (a <= 100)]
Это не совсем «удаление» записи, а сделать копию массива минус ненужных значений и присваиваем его переменной, которая была ранее присвоенного старого массива. После этого старый массив не имеет оставшихся ссылок и собирает мусор, что означает, что его память освобождается.
Стоит отметить, что этот метод не использует постоянную память, так как мы делаем копию массива, он использует память, линейную по размеру массива. Это может быть плохо, если ваш массив настолько огромен, что он достигает пределов памяти на вашем компьютере. Процесс фактического прохождения и удаления каждого элемента в массиве «на месте», также использующего постоянную память, будет совсем другой операцией, так как элементы в массиве должны быть заменены и блок памяти изменен. Я не уверен, что вы можете сделать это с помощью numpy
массива, однако одна вещь, которую вы можете сделать, чтобы избежать копирования является использование numpy
замаскированную массив:
import numpy.ma as ma
mx = ma.masked_array(a, mask = ((a < -100) | (a > 100)))
Все операции на замаскированного массива будет действовать, как если бы элементы мы «удалили» не существует, но мы действительно не «удалили» их, они все еще там в памяти, есть только запись о том, какие элементы пропускать теперь связаны с массивом, и нам никогда не нужно сделать копию массива в памяти. Кроме того, если мы когда-либо хотим, чтобы наши удаленные значения обратно, можно просто удалить маску, как так:
mx.mask = ma.nomask
как может быть < -100 and > 100? Предполагаю, вы имеете в виду или? – qwwqwwq
отредактировал, спасибо! –