Для установки нужно перейти по ссылке: http://www.scipy.org/Download
Arrays похожи на списки в Python, но в отличии от Python, Arrays - гомогенная структура, то есть может содержать только объекты одного типа, например, числа (float, int, ...)
Arrays в Numpy позволяют делать операции быстрее чем с помощью стандартных списков.
Далее пример создания массива в numpy
import numpy as np
a = np.array([1, 4, 5, 8], float)
a
С массивами можно делать все те же операции, что и со стандартными списками.
print(a[:2])
print(a[3])
a[0] = 5.
a
Массивы могут быть многомерными. В отличии от списков, обращение по индексу выполняется несколько иным образом.
a = np.array([[1, 2, 3], [4, 5, 6]], float)
print(a[0,0])
a
Свойтсво shape
массива возвращает tuple, элементы которого есть размер каждого из измерений.
a.shape
print(a.dtype)
Выражение in
может быть изпользовано для проверки принадлежности элемента массиву.
2 in a
Массивы могут быть reshaped
. В представленном ниже примере одномерный массив, состоящий из 10 элементов, преобразуется в двумерный массив.
a = np.array(range(10), int)
a
a = a.reshape((5, 2))
a
a.transpose()
a.flatten()
Можно выполнять конкатенацию массивов как одномерных так и многомерных
a = np.array([[1, 2], [3, 4]], float)
b = np.array([[5, 6], [7,8]], float)
print(np.concatenate((a,b)))
print(np.concatenate((a,b), axis=0))
print(np.concatenate((a,b), axis=1))
Но есть и другой способ с использованием методов vstack
и hstack
.
{Python}
x = np.arange(0,10,2) # x=([0,2,4,6,8])
y = np.arange(5) # y=([0,1,2,3,4])
m = np.vstack([x,y]) # m=([[0,2,4,6,8],
# [0,1,2,3,4]])
xy = np.hstack([x,y]) # xy =([0,2,4,6,8,0,1,2,3,4])
Глубокое копирование массивов
a = np.array([1, 2, 3], int)
b = a
c = a.copy()
a[0] = 4
print(a, b, c)
print(np.arange(5, dtype=float))
print(np.arange(1, 6, 2, dtype=int))
print(np.ones((2,3), dtype=float))
a = np.array([[1, 2, 3], [4, 5, 6]], float)
print(np.zeros_like(a)) # ones_like
В Numpy есть методы, которые позволяют создавать матрицы определенного вида, например, единичную матрицу.
np.identity(4, dtype=int)
np.eye(4, k=1, dtype=float)
В случае приминения стандартных математических операций по отношению к массивам, они выполняютсяя поэлементно, следовательно, массивы должны иметь одинаковые размеры.
a = np.array([1,2,3], float)
b = np.array([5,2,6], float)
a + b
Для двумерных массивов операция умножения также выполняется поэлементно и не имеет отношения к оперции умножения матриц, которую мы рассмотрим чуть позже.
Кроме возможности выполнения стандартных арифметических операций, Numpy предоставляет большое количество математических функций, которые могут быть поэлементно применены к массивам. Среди них множно найти, например:
abs, sign, sqrt, log, log10, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, and arctanh.
a = np.array([1, 4, 9], float)
np.sqrt(a)
Так же как и в случае стандартных списков, у нас есть возможность итерироваться по массивам с помощью for
.
a = np.array([1, 4, 5], int)
for x in a:
print(x)
Для случая многомерных массивов, итерирование происходит по первому измерению.
Существует большое количество функций, которые позволяют выполнять агрегацию значений всего массива, например: sum, prod, min, max, mean, argmin, argmax.
Для многомерных массивов, функции описанные выше, в качестве аргумента можно указать то по какому измерению будет выполняться операция.
a = np.array([1,2,4], int)
print(a.sum(), a.prod()) # np.sum(a), np.prod(a)
Так же как и обычные списки, массивы можно сортировать, искать уникальные элементы.
a = np.array([6, 2, 5, -1, 0, 5, 2], float)
a.sort()
print(a)
print(np.unique(a))
Numpy предоставляет большое количество функций для выполнения стандартных векторно-матричных преобразований.
В частности, для того чтобы выолнить скалярное произведение, можно воспользоваться функцией dot
, которая в случае двумерных массивов имеет смысл матричного произведения.
a = np.array([1, 2, 3], float)
b = np.array([0, 1, 1], float)
np.dot(a, b)
a = np.array([[0, 1], [2, 3]], float)
b = np.array([[1, 1], [4, 0]], float)
np.dot(a, b)
class Counter:
"""I count. That is all."""
def __init__(self, initial=0): # конструктор
self.value = initial # запись атрибута
def increment(self):
self.value += 1
def get(self):
return self.value # чтение атрибута
c = Counter(238)
c.increment()
c.get()
this
. Первый аргумент конструктора __init__
и всех остальных методов — экземпляр класса, который принято называть self
.self
конструкцией вида: self.some_attribute = value
.http://mit.spbau.ru/sewiki/images/2/2f/Python_2014_04.pdf (см. начиная со слайда 18)