мин, макс и среднее значение для больших массивов NumPy в Python - PullRequest
2 голосов
/ 29 марта 2012

У меня очень большой массив NumPy: a = np.array. Из этого массива я хочу получить минимальное, максимальное и среднее значения, которые можно легко сделать с помощью np.min(a), np.max(a) и np.mean(a).

Однако я также хочу иметь минимальное, максимальное и среднее значение части (начальная часть или конечная часть) этого массива. Есть ли какие-то функции для этого без создания нового массива / списка (потому что это действительно приведет к снижению производительности)?

Ответы [ 2 ]

7 голосов
/ 29 марта 2012

Все массивы, сгенерированные при базовом срезании, всегда являются представлениями исходного массива.

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

Так что да, просто используйте слайсы.

4 голосов
/ 29 марта 2012

Если блок, над которым вы работаете, является смежным (то есть не требует необычного индексирования, в этом случае часть будет скопирована), вы можете использовать обычный синтаксис среза, чтобы получить представление о рассматриваемой части массива без копирования :

>>> import numpy as np
>>> arr = np.array([1,2,3,4,5])
>>> part = arr[1:3] # no copies here
>>> part[:] = 22,33
>>> print arr
[ 1 22 33  4  5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...