https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing
Если число объектов в кортеже выбора меньше N, то: предполагается для любых последующих измерений.
Целое число i возвращает те же значения, что и i: i + 1, за исключением того, что размерность возвращаемого объекта уменьшается на 1. В частности, кортеж выбора с p-м элементом целым числом (и все другие записи: ) возвращает соответствующий подмассив с размером N - 1.
Они одинаковы. Как показано в другом ответе, есть разница во времени, но времена в ns
, где время синтаксического анализа Python и уровни вызовов функций могут иметь значение. Но я бы приветствовал любые исправления, основанные на фактическом чтении кода numpy.
In [190]: X = np.zeros((3,3))
In [191]: X.__array_interface__
Out[191]:
{'data': (45249072, False),
'strides': None,
'descr': [('', '<f8')],
'typestr': '<f8',
'shape': (3, 3),
'version': 3}
Свойства среза одинаковы:
In [192]: X[0].__array_interface__
Out[192]:
{'data': (45249072, False),
'strides': None,
'descr': [('', '<f8')],
'typestr': '<f8',
'shape': (3,),
'version': 3}
In [193]: X[0,:].__array_interface__
Out[193]:
{'data': (45249072, False),
'strides': None,
'descr': [('', '<f8')],
'typestr': '<f8',
'shape': (3,),
'version': 3}
время:
In [194]: timeit X[0]
172 ns ± 2.43 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [195]: timeit X[0,...]
175 ns ± 0.105 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [196]: timeit X[0,:]
264 ns ± 15 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
сравнить время возврата копии (в отличие от вида):
In [199]: timeit X[[0]]
6.73 µs ± 48.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
и такое же индексирование для столбца:
In [206]: timeit X[:,1]
262 ns ± 5.68 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [207]: timeit X[...,1]
177 ns ± 2.15 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
(и я получаю то же самое время для гораздо большего массива - поддерживая идею, что любые разницы во времени происходят во время синтаксического анализа / настройки, а не во время фактического построения представления.)