Это 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 столбца со всеми 0uint8
2D-массив типа
(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]: