Python комплексное сопряжение матрицы

Русские Блоги

Стандартная библиотека Python: numpy использует один

Подведем итоги классического упражнения 101 numpy:

1、numpy:

Пакет расширения python может использоваться для обработки больших матриц, имеется достаточное количество библиотек функций и функций линейного преобразования, имеется множество расширенных инструментов численного расчета:

import numpy as np print(np.__version__)

2. Основные операции:

Класс массива numpy — numpy.array

Среди них сумма размеров матрицы array.nidm, array.size: количество элементов, тип элементов array.dtype, array.shape: размер массива и array.itemsize: размер каждого элемента. элемент в байтах

Создайте определенный диапазон одномерной матрицы: arr = np.arange (10), использование аналогично range (), с тремя параметрами, первый — начальная точка, второй — конечная точка, а третий — длина шага

Тип данных запроса: array.dtype; тип данных преобразования: массив .astype (); Размер запроса: .ndim; Количество элементов запроса: .size

Возвращает арифметическую матрицу типа массива np.arange (1,10,2). Обратите внимание, что когда размер шага является числом с плавающей запятой, поскольку диапазон имеет определенную ошибку, он будет накапливаться, поэтому лучше использовать linspace.

np.logspace (1,4,4, base = 2, endpoint = True): создать геометрическую последовательность.

Также существует функция для создания одномерной матрицы np.repeat (a, b): одномерный массив, который повторяет элементы a b раз; обратите внимание, что сам a также может быть массивом:

np.r_[np.repeat(a, 3), np.tile(a, 3)] #> array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])

Создайте матрицу определенного размера: np.full ((2,3), 5) Метод создания логической матрицы: np.full ((2,3), Ture, dtype = bool); или np.ones ((2,3), dtype = bool);

Среди них np.ones () создает матрицу всех 1, np.zero () создает матрицу всех нулей, np.empty () может создать массив, на начальное значение которого влияет состояние памяти, а np.eye () может выводить единицы Matrix, np.random.random () может выводить матрицу с элементами любого размера. Обратите внимание, что это типы элементов float64

Основные операции и производящие функции numpy.array ():

7. Срез массива np.array
а. Правило разделения [правило трех двоеточий][Начало: Конец: Длина шага]б. Начать с -1
A [-1] Взять последнее
a = [0,1,2,3,4,5,6,7]
a[-1] = 7
c. Конец — -1 (начало должно быть числом больше или равно 0)
a[2:-1] = [2,3,4,5,6]г. Размер шага равен -1, что означает обратное

2. Метод печати Numpy:

np.set_printoptions (precision = 3) — установить формат вывода на три десятичных разряда

Реализуйте результат, чтобы изменить научную запись на несколько десятичных знаков: np . set_printoptions ( suppress = True , precision = 6 )

Установите диапазон вывода: np.set_printoptions (threshold = 6): выводить только шесть элементов до и после; np.set_printoptions (threshold = np.nan): выводить все

a [:] печатает все, a [: b] печатает до элементов b, a [b:] печатает элементы, начиная с b

Читайте также:  Java map to list sort

заметка , Np.array.reshape () может изменять размер матрицы диапазона:

Функция библиотеки numpy: параметр reshape (): reshape (a, newshape, order = ‘C’)

a: array_like; newshape: Размер вновь сформированного массива должен быть совместим с предыдущим, и исходное значение элемента не может быть изменено. Размерность может быть -1; order = , метод управления Index

заметка: Новый массив, сгенерированный путем изменения формы, и исходный массив используют одну и ту же память, то есть, если элементы одного массива изменяются, другой массив также изменится

обращать внимание :Новый атрибут формы массива должен совпадать с исходным. Если он равен -1, Numpy вычислит другое значение атрибута формы массива в соответствии с оставшимися размерами.

Приведем несколько примеров, и будет понятно. Существует массив z, атрибут shape которого равен (4, 4)

z = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) z.shape (4, 4)
z.reshape(-1) array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) # z.reshape (-1, 1) Другими словами, мы не знали, какой атрибут формы z был раньше, но мы хотели сделать z только одним столбцом, а количество строк было неизвестным. reshape (-1,1) `, Numpy автоматически вычисляет, что имеется 12 строк, а новый атрибут формы массива равен (16, 1), что соответствует исходному (4, 4). z.reshape (-1,1) array([[ 1], [ 2], [ 3], [ 4], [ 5], [ 6], [ 7], [ 8], [ 9], [10], [11], [12], [13], [14], [15], [16]]) # z.reshape (-1, 2) newshape равно -1, количество столбцов равно 2, количество строк неизвестно, форма после reshape равна (8, 2) z.reshape(-1, 2) array([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8], [ 9, 10], [11, 12], [13, 14], [15, 16]])

То есть, пока задано newshape = -1, numpy будет оценивать количество строк и столбцов изменения формы в соответствии с количеством элементов массива и количеством предоставленных строк и столбцов (если нет строки по умолчанию).

3. Расчет: Арифметические операции над массивами применяются поэлементно, то есть операции выполняются над каждым элементом: в отличие от других матричных операций, в массивах numpy оператор умножения * работает с каждым элементом. Произведение матрицы может быть выполнено с использованием точечной функции или точечного метода: такие операторы, как + =, * = и т. Д., Заменяют элементы массива в том месте, где выполняется операция, вместо создания нового массива 。

Если вычисляемый массив имеет другой тип данных , Следуйте восходящему преобразованию, то есть тип элемента результирующего массива является более общим или более точным типом данных:

>>> a = np.ones(3, dtype=np.int32) >>> b = np.linspace(0,pi,3) >>> b.dtype.name 'float64' >>> c = a+b >>> c array([ 1. , 2.57079633, 4.14159265]) >>> c.dtype.name 'float64' 

4. Часто используемые функции операций с массивами, сложения и оценки:

np.where( , x,y); Первый параметр — это условие оценки, второй — выходное значение, если условие истинно, а третий — выходное значение, если условие — Ложь: np.where не перезапишет исходный массив; np. where возвращает массив, элементом которого является int64, который представляет индекс элемента в исходном массиве, который удовлетворяет условиям, и на который может напрямую ссылаться [index].

Читайте также:  border-bottom

np.concatenate([a, b], axis=0): Объединить два массива a и b, ось — это атрибут оси, 0 — сращивание столбцов, а 1 — сращивание строк. Должны быть соответственно равные строки и столбцы;

Вы также можете использовать np.vstack ([a, b]) и np.r_ [a, b] для сращивания столбцов; np.hstack ([a, b]) и np.c_ [a, b] для сращивания строк. Используйте np.hsplit (a, 3) и np.hsplit (a, (3, 4)) для разделения столбцов; используйте np.vsplit (a, 3) и np.vsplit (a, (3, 4)) Разделение строк

np.setdiff1d(a,b): Удалить элементы, существующие в b, из a;

np.vectorize(max,otyeps=[float]):Метод преобразования скалярной функции в векторную функцию. . . . Хотя я не знаю, как пользоваться этой функцией

a [:, [1,0,2]] изменяет столбец исходного двумерного массива, индекс нового столбца находится в последнем массиве; arr [[1,0,2] ,:] изменяет строку исходного двумерного массива. Индекс новой строки находится в последнем массиве. Когда значение параметра index равно -1, строки (или столбцы) по умолчанию меняются местами a [:, :: — 1], a [:: — 1]

5 * np.random.random (15) .reshape (5,3) + np.repeat (5,15) .reshape (5,3): генерировать случайный двумерный массив от 5 до 10; он также может быть Используется следующая реализация кода

np.random.randint(low=5, high=10, size=(5,3)) + np.random.random((5,3))

np.genfromtxt():

Функция Genfromtxt создает данные таблицы массива

Genfromtxt в основном выполняет две операции цикла. Первый цикл преобразует каждую строку файла в последовательность строк. Второй цикл преобразует каждую последовательность строк в соответствующий тип данных.

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

Единственный обязательный параметр genfromtxt — это источник данных. Это может быть строка имени, соответствующая локальному или удаленному файлу, или файловый объект с методом чтения (например, фактический файл или объект StringIO. StringIO). Если параметром является URL-адрес удаленного файла, последний автоматически загружается в текущий каталог. Входной файл может быть текстовым файлом или архивом.В настоящее время эта функция распознает gzip и bz2 (bzip2). Тип архивного файла — проверка расширения файла: если имя файла заканчивается на «.gz», архив gzip; если он заканчивается на «bz2», архив bzip2. Где разделитель — тип разделителя

5. выражение матричной операции python:

1. Добавление массивов довольно произвольное, без одинаковых строк и столбцов:

A + b возвращает матрицу 5 * 5

Результатом являются все строки одного массива плюс все строки другого массива, все столбцы одного массива плюс все столбцы другого массива. Возвращает матрицу с наибольшей строкой и наибольшим столбцом между ними.

Читайте также:  Java android sql connection

2. Произведение массива может быть умножено напрямую, это соответствующее умножение бит, возведение в степень массива использует **. Массив можно транспонировать, такжеarray.T,Но не может быть отменено

a.dot(b)、np.dot(a,b)Умножение матриц

Найдите степень е:np.exp(array); Знак открытого корня элемента:np.sqrt(array)

3. Несколько основных функций:array.max(),array.min(),array.mean(),array.sum()

array.floor()Округлитьarray.ravel()сплющенный;

Ось параметра = 1 — строка, а ось = 0 — столбец.

# The view method creates a new array object that looks at the same data. import numpy as np a = np.arange(12) b = a.view () # b - это недавно созданный массив, но b и общие данные b is a # Определить, является ли b a? # Вывод False print (b) # Выход [0 1 2 3 4 5 6 7 8 9 10 11] b.shape = 2, 6 # Измените форму b, форма a не изменится print (a.shape) print (b) # Выход (12,) [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] b [0, 4] = 1234 # Измените элемент первой строки и пятого столбца b на 1234, и это повлияет на соответствующий элемент позиции a print (b) # Выход [[0 1 2 3 1234 5] [ 6 7 8 9 10 11]] print (a) # Выход [0 1 2 3 1234 5 6 7 8 9 10 11]

Глубокая копия:.copy()

# The copy method makes a complete copy of the array and its data. import numpy as np a = np.arange(12) a.shape = 3, 4 a[1, 0] = 1234 c = a.copy() c is a c [0, 0] = 9999 # Изменение значения элемента c не повлияет на элемент a print (c) print (a) # Выход [[9999 1 2 3] [1234 5 6 7] [ 8 9 10 11]] [[ 0 1 2 3] [1234 5 6 7] [ 8 9 10 11]]

5. Используйте ==, чтобы определить, существует ли значение в массиве или матрице:

6. Назначьте результат суждения переменной.

7. Оценивайте сразу несколько условий

Строка сложения и столбец должны быть одинаковыми; используйте кратное умножение соответствующих элементов, и умножение матрицы может быть записано напрямую, но строки и столбцы должны быть равны

матрица. T означает транспонированную матрицу. I означает обратную матрицу.

9. Свойства матричного объекта:

>>> m [0] # взять одну строку matrix([[1, 2, 3]]) >>> m [0,1] # Первая строка, вторая данные 2 >>> m [0] [1] # Обратите внимание, что вы не можете принимать значения как массивы Traceback (most recent call last): File "", line 1, in File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index 1 is out of bounds for axis 0 with size 1
#Сортировать >>> m = mat ([[2,5,1], [4,6,2]]) # Создаем матрицу с 2 строками и 3 столбцами >>> m matrix([[2, 5, 1], [4, 6, 2]]) >>> m.sort () # сортируем каждую строку >>> m matrix([[1, 2, 5], [2, 4, 6]]) >>> m.shape # Получить количество строк и столбцов матрицы (2, 3) >>> m.shape [0] # Получить количество строк матрицы 2 >>> m.shape [1] # Получить количество столбцов матрицы 3 # Значение индекса >>> m [1 ,:] # Получить все элементы в первой строке matrix([[2, 4, 6]]) >>> m [1,0: 1] # 0-й элемент в первой строке, обратите внимание на закрытые слева и открытые справа matrix([[2]]) >>> m[1,0:3] matrix([[2, 4, 6]]) >>> m[1,0:2] matrix([[2, 4]])
# Расширение матрицы: np.tile x=np.matrix([1,2,3]) np.tile(x,(2,4))

Источник

Оцените статью