ndarray в numpy

NumPy

Это 6-й день моего участия в ноябрьском испытании обновлений.Подробности о событии:Вызов последнего обновления 2021 г.

окрестности

  • ubuntu 18.04 64bit
  • numpy 1.19.2

Введение

numpyдаpythonБиблиотека с открытым исходным кодом для численных вычислений в , в основном используемая для хранения и обработки многомерных массивов, основная структура данныхndarray. Поделитесь этой статьейndarrayОсновное использование, сначала необходимо установитьnumpy

pip install numpy

2D ndarray

Чтобы построить двумерный массив (то есть матрицу), нужно знать количество строк и столбцов массива и тип данных каждого элемента.numpyсреди общихuint8,int32,float32,float64и т.д

Следующее строит 2 строки и 3 столбца со всеми 0uint82D-массив типа

(base) xugaoxiang@1070Ti:~$ ipython
Python 3.7.6 (default, Jan  8 2020, 19:59:22)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import numpy as np

In [2]: np.zeros((2, 3), np.uint8)
Out[2]:
array([[0, 0, 0],
       [0, 0, 0]], dtype=uint8)

In [3]:

Если вы хотите построить массив всех единиц, вы можете использоватьnp.ones()метод

In [5]: np.ones((2, 3), np.uint8)
Out[5]:
array([[1, 1, 1],
       [1, 1, 1]], dtype=uint8)

Инициализировать с постоянными данными

In [8]: np.array([[1, 2, 3], [4, 5, 6]], np.float64)
Out[8]:
array([[1., 2., 3.],
       [4., 5., 6.]])

3D ndarray

Трехмерный массив можно понять, поскольку каждый элемент представляет собой двумерный массив. Например 2х2х3uint8Трехмерный массив — это два двумерных массива 2x3.

In [11]: np.array([[[1, 2, 3], [4, 5, 6]], [[9, 8, 7], [6, 5, 4]]], np.uint8)
Out[11]:
array([[[1, 2, 3],
        [4, 5, 6]],

       [[9, 8, 7],
        [6, 5, 4]]], dtype=uint8)

In [12]:

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

Общие атрибуты и получение значений элементов ndarray

shapeАтрибуты могут получить размер, например

In [12]: t = np.zeros([2, 3], np.uint8)

In [13]: t.shape
Out[13]: (2, 3)

In [14]:

In [14]: t3 = np.array([[[1, 2, 3], [4, 5, 6]], [[9, 8, 7], [6, 5, 4]]],np.uint8
    ...: )

In [15]: t3.shape
Out[15]: (2, 2, 3)

In [16]:

dtypeАтрибут может получить тип данных элемента, например

In [17]: t.dtype
Out[17]: dtype('uint8')

In [18]: t3.dtype
Out[18]: dtype('uint8')

In [19]:

Получить значение элемента в массиве, можно получить по индексу, индекс начинается с 0, для примера возьмем двухмерный

In [20]: t = np.array([[1, 2, 3], [4, 5, 6]], np.uint8)

In [21]: t[1, 1]
Out[21]: 5

In [22]: t[0, 2]
Out[22]: 3

In [23]:

Получите строку данных с указанным вышеtПеременные в качестве примера, код выглядит следующим образом

In [36]: t[0,:]
Out[36]: array([1, 2, 3], dtype=uint8)

In [37]: t[1,:]
Out[37]: array([4, 5, 6], dtype=uint8)

# 当索引超出后,会报错
In [38]: t[2,:]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-38-79ac94a5bef6> in <module>
----> 1 t[2,:]

IndexError: index 2 is out of bounds for axis 0 with size 2

In [39]:

Получите столбец данных с указанным вышеtПеременные в качестве примера, код выглядит следующим образом

In [40]: t[:,0]
Out[40]: array([1, 4], dtype=uint8)

In [41]: t[:,1]
Out[41]: array([2, 5], dtype=uint8)

In [42]: t[:,2]
Out[42]: array([3, 6], dtype=uint8)

In [43]: t[:,3]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-43-cd95ba35026b> in <module>
----> 1 t[:,3]

IndexError: index 3 is out of bounds for axis 1 with size 3

In [44]:

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

# 这里的区间操作是左闭右开的,如[0:1],就是从0行开始,但不包括第1行
In [45]: t[0:1,1:3]
Out[45]: array([[2, 3]], dtype=uint8)

In [46]: