Spec-Zone.ru › NumPy 1.19

Словарь терминов

along an axis

Оси определены для массивов с более чем одним измерением. Двумерный массив имеет две соответствующие оси: первая проходит вертикально вниз по строкам (ось 0), а вторая — горизонтально по столбцам (ось 1).

Многие операции могут происходить вдоль одной из этих осей. Например, мы можем просуммировать каждую строку массива, в этом случае мы работаем вдоль столбцов, или по оси 1:

>>> x = np.arange(12).reshape((3,4))

>>> x
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

>>> x.sum(axis=1)
array([ 6, 22, 38])
array

Однородный контейнер числовых элементов. Каждый элемент в массиве занимает фиксированный объем памяти (отсюда однородность) и может быть числовым элементом одного типа (например, float, int или complex) или комбинацией (например, (float, int, float)). Каждый массив имеет связанный с ним тип данных (или dtype), который описывает числовой тип его элементов:

>>> x = np.array([1, 2, 3], float)

>>> x
array([ 1.,  2.,  3.])

>>> x.dtype # floating point number, 64 bits of memory per element
dtype('float64')


# More complicated data type: each array element is a combination of
# and integer and a floating point number
>>> np.array([(1, 2.0), (3, 4.0)], dtype=[('x', int), ('y', float)])
array([(1, 2.0), (3, 4.0)],
      dtype=[('x', '<i4'), ('y', '<f8')])

Быстрые поэлементные операции, называемые ufunc, работают с массивами.

array_like

Любая последовательность, которая может быть интерпретирована как ndarray. Это включает вложенные списки, кортежи, скаляры и существующие массивы.

attribute

Свойство объекта, к которому можно получить доступ с помощью obj.attribute, например, shape — это атрибут массива:

>>> x = np.array([1, 2, 3])
>>> x.shape
(3,)
big-endian

При хранении многобайтового значения в памяти как последовательности байтов, последовательность адресно/посылает/хранит самый значимый байт первым (самый низкий адрес) и наименее значимый байт последним (самый высокий адрес). Распространён в микропроцессорах и используется для передачи данных по сетевым протоколам.

BLAS

Основные подпрограммы линейной алгебры

broadcast

NumPy может выполнять операции над массивами, формы которых не совпадают:

>>> x = np.array([1, 2])
>>> y = np.array([[3], [4]])

>>> x
array([1, 2])

>>> y
array([[3],
       [4]])

>>> x + y
array([[4, 5],
       [5, 6]])

См. numpy.doc.broadcasting для получения дополнительной информации.

C order

См. row-major

column-major

Способ представления элементов N-мерного массива в одноразмерной компьютерной памяти. В порядке следования по столбцам, самый левый индекс «изменяется быстрее всего»: например, массив:

[[1, 2, 3],
 [4, 5, 6]]

представлен в порядке следования по столбцам как:

[1, 4, 2, 5, 3, 6]

Порядок следования по столбцам также известен как порядок Fortran, так как язык программирования Fortran его использует.

decorator

Оператор, преобразующий функцию. Например, может быть определён log декоратор, чтобы выводить отладочную информацию при выполнении функции:

>>> def log(f):
...     def new_logging_func(*args, **kwargs):
...         print("Logging call with parameters:", args, kwargs)
...         return f(*args, **kwargs)
...
...     return new_logging_func

Теперь, когда мы определяем функцию, мы можем «украсить» её с помощью log:

>>> @log
... def add(a, b):
...     return a + b

Вызов add затем даёт:

>>> add(1, 2)
Logging call with parameters: (1, 2) {}
3
dictionary

Подобно словарю языка, который предоставляет отображение между словами и их описаниями, словарь Python — это отображение между двумя объектами:

>>> x = {1: 'one', 'two': [1, 2]}

Здесь, x — словарь, отображающий ключи на значения, в данном случае целое число 1 на строку “one”, а строку “two” на список [1, 2]. Значения могут быть получены с помощью соответствующих ключей:

>>> x[1]
'one'

>>> x['two']
[1, 2]

Обратите внимание, что словари не хранятся в определённом порядке. Кроме того, большинство изменяемых (см. неизменяемый ниже) объектов, таких как списки, не могут быть использованы в качестве ключей.

Для получения дополнительной информации о словарях, прочитайте руководство по Python.

field

В структурированном типе данных каждый подтип называется field. field имеет имя (строка), тип (любой допустимый dtype) и необязательный title. См. Объекты типов данных (dtype)

Fortran order

См. column-major

flattened

Сведён к одномерному массиву. См. numpy.ndarray.flatten для подробностей.

homogenous

Описывает блок памяти, состоящий из блоков, каждый блок состоит из элементов и имеет одинаковый размер, и блоки интерпретируются точно одинаково. В самом простом случае каждый блок содержит один элемент, например int32 или float64.

immutable

Объект, который нельзя изменить после выполнения, называется неизменяемым. Два распространённых примера — строки и кортежи.

instance

Определение класса даёт чертёж для создания объекта:

>>> class House:
...     wall_colour = 'white'

Однако, нам нужно построить дом, прежде чем он появится:

>>> h = House() # build a house

Теперь, h называется экземпляром House. Следовательно, экземпляр — это конкретное воплощение класса.

iterable

Последовательность, которая позволяет «проходить» (итерироваться) по элементам, обычно с помощью цикла, например:

>>> x = [1, 2, 3]
>>> [item**2 for item in x]
[1, 4, 9]
It is often used in combination with enumerate::
>>> keys = ['a','b','c']
>>> for n, k in enumerate(keys):
...     print("Key %d: %s" % (n, k))
...
Key 0: a
Key 1: b
Key 2: c
itemsize

Размер элемента dtype в байтах.

list

Контейнер Python, который может содержать любое количество объектов или элементов. Элементы не обязательно должны быть одного типа и могут даже быть самими списками:

>>> x = [2, 2.0, "two", [2, 2.0]]

Список x содержит 4 элемента, каждый из которых можно получить по отдельности:

>>> x[2] # the string 'two'
'two'

>>> x[3] # a list, containing an integer 2 and a float 2.0
[2, 2.0]

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

>>> x[0:2] # or, equivalently, x[:2]
[2, 2.0]

В коде массивы часто удобно выражать как вложенные списки:

>>> np.array([[1, 2], [3, 4]])
array([[1, 2],
       [3, 4]])

Для получения дополнительной информации см. раздел о списках в руководстве по Python. Для типа отображения (ключ-значение) см. словарь.

little-endian

При хранении многобайтового значения в памяти как последовательности байтов, последовательность адресно/посылает/хранит наименее значимый байт первым (самый низкий адрес) и самый значимый байт последним (самый высокий адрес). Распространён в процессорах x86.

mask

Булевый массив, используемый для выбора только определённых элементов для операции:

>>> x = np.arange(5)
>>> x
array([0, 1, 2, 3, 4])

>>> mask = (x > 2)
>>> mask
array([False, False, False, True,  True])

>>> x[mask] = -1
>>> x
array([ 0,  1,  2,  -1, -1])
masked array

Массив, который подавляет значения, указанные маской:

>>> x = np.ma.masked_array([np.nan, 2, np.nan], [True, False, True])
>>> x
masked_array(data = [-- 2.0 --],
             mask = [ True False  True],
       fill_value = 1e+20)

>>> x + [1, 2, 3]
masked_array(data = [-- 4.0 --],
             mask = [ True False  True],
       fill_value = 1e+20)

Маскированные массивы часто используются при работе с массивами, содержащими пропущенные или недопустимые записи.

matrix

Двумерный ndarray, который сохраняет свою двумерную природу во время операций. Он имеет определённые специальные операции, такие как * (умножение матриц) и ** (степень матрицы), определённые:

>>> x = np.mat([[1, 2], [3, 4]])
>>> x
matrix([[1, 2],
        [3, 4]])

>>> x**2
matrix([[ 7, 10],
      [15, 22]])
method

Функция, связанная с объектом. Например, каждый ndarray имеет метод, называемый repeat:

>>> x = np.array([1, 2, 3])
>>> x.repeat(2)
array([1, 1, 2, 2, 3, 3])
ndarray

См. массив.

record array

An ndarray с структурированным типом данных, который был подклассифицирован как np.recarray и чьим dtype является тип np.record, что делает поля его типа данных доступными по атрибуту.

reference

Если a — ссылка на b, то (a is b) == True. Следовательно, a и b — разные имена для одного и того же объекта Python.

row-major

Способ представления элементов N-мерного массива в одноразмерной компьютерной памяти. В порядке следования по строкам, самый правый индекс «изменяется быстрее всего»: например, массив:

[[1, 2, 3],
 [4, 5, 6]]

представлен в порядке следования по строкам как:

[1, 2, 3, 4, 5, 6]

Порядок следования по строкам также известен как порядок C, так как язык программирования C его использует. Новые массивы NumPy по умолчанию расположены в порядке следования по строкам.

self

Часто встречается в сигнатурах методов, self относится к экземпляру связанного класса. Например:

>>> class Paintbrush:
...     color = 'blue'
...
...     def paint(self):
...         print("Painting the city %s!" % self.color)
...
>>> p = Paintbrush()
>>> p.color = 'red'
>>> p.paint() # self refers to 'p'
Painting the city red!
slice

Используется для выбора только определённых элементов из последовательности:

>>> x = range(5)
>>> x
[0, 1, 2, 3, 4]
>>> x[1:3] # slice from 1 to 3 (excluding 3 itself)
[1, 2]
>>> x[1:5:2] # slice from 1 to 5, but skipping every second element
[1, 3]
>>> x[::-1] # slice a sequence in reverse
[4, 3, 2, 1, 0]

Массивы могут иметь более одного измерения, каждое из которых может быть срезано индивидуально:

>>> x = np.array([[1, 2], [3, 4]])
>>> x
array([[1, 2],
       [3, 4]])
>>> x[:, 1]
array([2, 4])
structure

См. структурированный тип данных

structured data type

Тип данных, состоящий из других типов данных

subarray data type

A structured data type может содержать ndarray с собственным dtype и формой:

>>> dt = np.dtype([('a', np.int32), ('b', np.float32, (3,))])
>>> np.zeros(3, dtype=dt)
array([(0, [0., 0., 0.]), (0, [0., 0., 0.]), (0, [0., 0., 0.])],
      dtype=[('a', '<i4'), ('b', '<f4', (3,))])
title

В дополнение к именам полей, поля структурированного массива могут иметь связанный заголовок, который является псевдонимом имени и обычно используется для построения графиков.

tuple
END_OF_DOCUMENT_MARKER

Последовательность, которая может содержать переменное количество типов любого вида. Кортеж неизменяем, т.е. после создания его нельзя изменить. Подобно списку, к нему можно обращаться по индексу и срезам:

>>> x = (1, 'one', [1, 2])
>>> x
(1, 'one', [1, 2])

>>> x[0]
1

>>> x[:2]
(1, 'one')

Полезной концепцией является «распаковка кортежа», которая позволяет назначать переменные содержимому кортежа:

>>> x, y = (1, 2)
>>> x, y = 1, 2

Это часто используется, когда функция возвращает несколько значений:

>>> def return_many():
...     return 1, 'alpha', None
>>> a, b, c = return_many()
>>> a, b, c
(1, 'alpha', None)
>>> a
1
>>> b
'alpha'
ufunc

Универсальная функция. Быстрая поэлементная, векторизованная операция над массивом. Примеры включают add, sin и logical_or.

vectorization

Оптимизация цикла с помощью специализированного кода. В традиционном понимании векторизация выполняет одну и ту же операцию над множеством элементов с фиксированными шагами между ними с помощью специализированного оборудования. Компиляторы умеют использовать хорошо написанные циклы для реализации таких оптимизаций. NumPy использует векторизацию для обозначения любой оптимизации с помощью специализированного кода, выполняющего одинаковые операции над несколькими элементами, обычно достигая ускорения, избегая некоторой издержек при поиске и преобразовании элементов.

view

Массив, который не владеет своими данными, а вместо этого ссылается на данные другого массива. Например, мы можем создать представление, которое показывает только каждый второй элемент другого массива:

>>> x = np.arange(5)
>>> x
array([0, 1, 2, 3, 4])

>>> y = x[::2]
>>> y
array([0, 2, 4])

>>> x[0] = 3 # changing x changes y as well, since y is a view on x
>>> y
array([3, 2, 4])
wrapper

Python — язык высокого уровня (с высокой абстракцией или похожий на английский). Эта абстракция влечёт за собой затраты на скорость выполнения, и иногда требуется использовать языки более низкого уровня для выполнения быстрых вычислений. Обёртка — это код, который обеспечивает мост между языками высокого и низкого уровня, позволяя, например, Python выполнять код, написанный на C или Fortran.

Примеры включают ctypes, SWIG и Cython (которые оборачивают C и C++) и f2py (который оборачивает Fortran).

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/glossary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API