NumPy, сокращение от Numerical Python, представляет собой библиотеку Python, в которую добавлена поддержка больших многомерных массивов и матриц, а также большая коллекция высокоуровневых математических функций для работы с этими массивами. NumPy — одна из основных библиотек, используемых в науке о данных и машинном обучении, поскольку она предоставляет мощный набор инструментов для обработки данных, анализа и вычислений.
Массивы в NumPy похожи на списки в Python, но более эффективны и мощны для числовых операций. Вот некоторые ключевые функции массивов NumPy:
- Однородный: все элементы в массиве NumPy должны иметь один и тот же тип данных, который указывается при создании массива.
- Фиксированный размер. Размер массива NumPy фиксируется при его создании и не может быть изменен.
- Многомерность: массивы NumPy могут иметь любое количество измерений, от одного до многих.
Другая причина, по которой массивы NumPy работают быстрее, чем списки, — хранение данных в заразной памяти.
Приложения NumPy
- Математика (замена MATLAB)
- Графика (Matplotlib)
- Серверная часть (Pandas, Connect 4, цифровая фотография, обработка изображений)
- Машинное обучение
Начало работы с NumPy
Чтобы использовать NumPy в коде Python, сначала необходимо установить его. Вы можете сделать это с помощью pip, менеджера пакетов Python, выполнив следующую команду:
pip install numpy
Этот оператор создает псевдоним "np" для библиотеки NumPy, что упрощает ее использование в вашем коде.
Давайте рассмотрим несколько примеров того, как использовать NumPy для задач науки о данных.
Создание и проверка массива NumPy
Вы можете создавать массивы NumPy, используя различные функции, предоставляемые библиотекой. Вот несколько примеров:
a = np.array([1,2,3]) print(a) output: [1 2 3] b = np.array([[9.0,8.0,7.0],[6.0,5.0,4.0]]) print(b) output: [[9. 8. 7.] [6. 5. 4.]] # Get Dimension of a array print(a.ndim) print(b.ndim) output: 1 2 # Get Shape b.shape output: (2, 3) # Get Type a.dtype output: dtype('int32') # Get Size print(a.itemsize) # Get total size print(a.nbytes) # Get number of elements print(a.size) # Get the lenght of array len(a) # Get the name of the datatype a.dtype.name # Convert an array to different data type b.astype(int) output: 4 12 3
Начальные заполнители
1. Create a 3x5 array filled with zeros. 2. Create a 2x2 array filled with ones. 3. Create an array of values from 10 to 25 (excluding 25) with a step of 5. 4. Create an array of 9 evenly spaced values between 0 and 2. 5. Create a 2x2 array filled with the value 7. 6. Create a 2x2 identity matrix. 7. Create a 2x2 array with random values between 0 and 1. 8. Create a 3x2 array without initializing its entries. np.zeros((3,5)) array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) np.ones((2,2)) array([[1., 1.], [1., 1.]]) np.arange(10,25,5) array([10, 15, 20]) np.linspace(0,2,9) array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ]) np.full((2,2),7) array([[7, 7], [7, 7]]) np.eye(2) array([[1., 0.], [0., 1.]]) np.random.random((2,2)) array([[0.02947711, 0.95214664], [0.64457076, 0.64514743]]) np.empty((3,2)) array([[9., 8.], [7., 6.], [5., 4.]])
Типы данных
np.int32: Signed 32-bit integer type np.uint64: Unsigned 64-bit integer type np.float64: Double-precision floating point np.complex128: Complex number represented by two 64-bit floats np.bool: Boolean type storing True and False values np.object: Python object type np.string_: Fixed-length string type np.unicode_: Fixed-length unicode type
Подмножество, нарезка и индексация
a = np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]]) print(a) [[ 1 2 3 4 5 6 7] [ 8 9 10 11 12 13 14]] # Get a specific element [r, c] a[1, 5] 13 # Get a specific row a[0, :] array([1, 2, 3, 4, 5, 6, 7]) # Getting a little more fancy [startindex:endindex:stepsize] a[0, 1:-1:2] array([2, 4, 6]) #updating an elemn a[1,5] = 20 a[:,2] = [1,2] print(a) [[ 1 2 5 4 5 6 7] [ 8 9 5 11 12 20 14]] [[ 1 2 1 4 5 6 7] [ 8 9 2 11 12 20 14]]
Математика массивов
a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.add(a, b) # Output: array([5, 7, 9]) np.subtract(a, b) # Output: array([-3, -3, -3]) np.multiply(a, b) # Output: array([4, 10, 18]) np.divide(a, b) # Output: array([0.25, 0.4 , 0.5 ]) np.power(a, b) # Output: array([ 1, 32, 729]) np.sqrt(a) # Output: array([1. , 1.41421356, 1.73205081]) np.exp(a) # Output: array([ 2.71828183, 7.3890561 , 20.08553692]) np.sin(a) # Output: array([0.84147098, 0.90929743, 0.14112001]) np.cos(a) # Output: array([ 0.54030231, -0.41614684, -0.9899925 ]) np.log(a) # Output: array([0. , 0.69314718, 1.09861229]) Note: you are also allowed to use mathematical symbols directly like +, -, * etc.
Линейная алгебра
# For Matrix Multiplction np.matmul(a,b) # Find the determinant c = np.identity(3) np.linalg.det(c) #output: 1
Справочные документы для операций линейной алгебры:
https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
- определитель
- След
- Сингулярное векторное разложение
- собственные значения
- Матричная норма
- Инверсия и др.
Статистика
np.mean(arr) Compute the arithmetic mean along a specified axis. np.median(arr) Compute the median along a specified axis. np.std(arr) Compute the standard deviation along a specified axis. np.var(arr) Compute the variance along a specified axis. np.max(arr) Find the maximum value along a specified axis. np.min(arr) Find the minimum value along a specified axis. np.sum(arr) Compute the sum of all elements along a specified axis. np.prod(arr) Compute the product of all elements along a specified axis. np.percentile(arr, q) Compute the q-th percentile of the data along a specified axis. np.corrcoef(arr) Compute the correlation matrix of a 2D array. np.cov(arr) Estimate a covariance matrix of a 2D array.
Реорганизация массивов
before = np.array([[1,2,3,4],[5,6,7,8]]) print(before) after = before.reshape((2,3)) print(after) [[1 2 3 4] [5 6 7 8]] [[1 2] [3 4] [5 6] [7 8]] # Vertically stacking vectors v1 = np.array([1,2,3,4]) v2 = np.array([5,6,7,8]) np.vstack([v1,v2,v1,v2]) array([[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]]) # Horizontal stack h1 = np.ones((2,4)) h2 = np.zeros((2,2)) np.hstack((h1,h2)) array([[1., 1., 1., 1., 0., 0.], [1., 1., 1., 1., 0., 0.]])
Манипуляции с массивами
# To take the transpose of an array np.transpose(a) # Adding/removing elements np.append(h,g) np.insert(a, 1, 5) np.delete(a, [1]) # Combining arrays np.concatenate(a,b) # Sorting arrays a.sort() # Copying arrays np.copy(a)
Важная заметка
Я работаю над #100daysofMLCode, где я начинаю с начального уровня, я буду публиковать еженедельный контент или больше через неделю в виде crux. Если вы новичок и хотите улучшить свои знания в области науки о данных наряду с практической реализацией, мы можем связаться через LinkedIn, GitHub и Medium здесь.
Вот мой профиль LinkedIn на случай, если вы захотите связаться со мной. Я буду счастлив быть связанным с вами.
Заключительные слова
Спасибо за чтение. Если вам понравился этот пост, пожалуйста, нажмите кнопку хлопка и поделитесь им с друзьями. Кроме того, я буду рад услышать ваши отзывы. Если вы хотите получать уведомления, когда я создаю новую запись в блоге, вы также можете подписаться на меня в моей учетной записи GitHub.