В многомерном массиве на каждую ось (axis) приходится свой индекс. Индексы передаются в виде кортежа, т.е. набора чисел, разделенных запятыми в круглых скобках (i1,i2,…,in) см. здесь подробнее про массивы в numpy, scipy http://pages.physics.cornell.edu/~myers/teaching/ComputationalMethods/python/arrays.html
Атрибуты массива:
ndarray.ndim — число осей (измерений) массива. Как уже было сказано, в мире Python число измерений часто называют рангом.
ndarray.shape — размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно рангу массива, то есть ndim.
ndarray.size — число всех элементов массива. Равно произведению всех элементов атрибута shape.
ndarray.dtype — объект, описывающий тип элементов массива. Можно определить dtype, используя стандартные типы данных Python. NumPy здесь предоставляет целый букет возможностей, например: bool, character, int, int8, int16, int32, int64, float, float8, float16, float32, float64, complex, complex64, object_.
ndarray.itemsize — размер каждого элемента массива в байтах. Например, для массива из элементов типа float64 значение itemsize равно 8 (=64/8), а для complex32 этот атрибут равен 4 (=32/8).
ndarray.data — буфер, содержащий фактические элементы массива. Обычно нам не будет нужно использовать этот атрибут, потому как мы будем обращаться к элементам массива с помощью индексов.
import numpy as np
# выбор из многомерного массива
b = np.array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
b.ndim
b.shape
b.size
b.dtype
b.itemsize
b.data
# 1 строка 2 столбец
b[1,2]
b[1][2]
b[(1,2)]
# последняя строка, смещение по кругу
b[-1]
# предпоследняя строка
b[-2]
# последний элемент
b[-1,-1]
# срез подблока массива [н1:к1, н2:к2]
b[0:2, 0:3]
# ошибка
b[, 0:3]
b[:, 0:3]
# 2 столбец
b[:, 2]
# все столбцы до 2-го
b[:, :2]
# столбцы после 2-го
b[:, 2:]
# блок, шириной 2 с конца массива
b[:, -2:]
# len возвращает длину первого измерения (оси)
# a = np.array([[1, 2, 3], [4, 5, 6]], float)
len(b)
# in используется для проверки на наличие элемента в массиве
22 in b
# reshape - создает новый массив
# переформатировать одномерный массив в двумерный
a = np.array(range(10), float)
a
a = a.reshape((5, 2))
a
a.shape
# cвязывание имен в python работает и с массивами.
# copy используется для создания копии существующего массива в памяти
a = np.array([1, 2, 3], float)
b = a
c = a.copy()
a[0] = 0
a
b
c
# преобразовать массив в список
a = np.array([1, 2, 3], float)
a.tolist()
a
b=list(a)
a
# заполнение одинаковыми значениями
a.fill(0)
a
# flatten - конвертировать многомерный в одномерный
a = np.array([[1, 2, 3], [4, 5, 6]], float)
a
a.flatten()
# concatenate - конкатенация массивов
a = np.array([1,2], float)
b = np.array([3,4,5,6], float)
c = np.array([7,8,9], float)
np.concatenate((a, b, c))
# concatenate соединяет по первому измерению (axis=0), можно указать другое
a = np.array([[1, 2], [3, 4]], float)
b = np.array([[5, 6], [7,8]], float)
np.concatenate((a,b))
np.concatenate((a,b), axis=0)
np.concatenate((a,b), axis=1)
# константа newaxis d квадратных скобках увеличивает размерность массива
a = np.array([1, 2, 3], float)
a
a[:,np.newaxis]
a[:,np.newaxis].shape
a[np.newaxis,:]
a[np.newaxis,:].shape