Ответ 1
Нарезка работает по-разному с массивами NumPy. Документы NumPy посвящают длительную страницу по теме. Чтобы выделить некоторые моменты:
- Наборы NumPy могут срезать несколько измерений
- Все массивы, созданные базовой средой NumPy, всегда представляют собой вид исходного массива, а фрагменты списков - мелкие.
- Вы можете назначить скаляр в срез NumPy.
- Вы можете вставлять и удалять элементы в
list
, назначая последовательность разной длины срезу, тогда как NumPy вызывает ошибку.
Демо:
>>> a = np.arange(4, dtype=object).reshape((2,2))
>>> a
array([[0, 1],
[2, 3]], dtype=object)
>>> a[:,0] #multidimensional slicing
array([0, 2], dtype=object)
>>> b = a[:,0]
>>> b[:] = True #can assign scalar
>>> a #contents of a changed because b is a view to a
array([[True, 1],
[True, 3]], dtype=object)
Кроме того, массивы NumPy обеспечивают удобные математические операции с массивами объектов, которые их поддерживают (например, fraction.Fraction
).