Эта статья возникла из личного публичного аккаунта:TechFlow, оригинальность это не просто, прошу внимания
Сегодняпустая темаЧетвертая статья, Изменение формы массива и тернарные выражения в Numpy.
Во-первых, давайте посмотрим на изменение формы массива.изменить форму массива. Операция изменения формы массива, при условии, что все элементы массива остаются неизменными. Например, есть две широко используемые операции: транспонирование и изменение формы.
Транспонировать и изменить форму
Операция транспонирования очень проста и соответствует понятию транспонированной матрицы в линейной алгебре, то есть ее функция заключается в преобразованиитранспонировать матрицу.
Определение транспонированной матрицыЗапишите строки матрицы как столбцы транспонированной матрицы., запишите столбцы как строки транспонированной матрицы. Это определяет двумерную матрицу.По сути, операция транспонирования фактически переворачивает матрицу вдоль большой диагонали матрицы. После переворачивания становится ясно, что различные размеры этой матрицы изменятся.
Среди них двумерная матрица наиболее интуитивно понятна, матрица 4 х 3, после транспонирования получается матрица 3 х 4. А если измерений больше? Что если транспонировать матрицу 3 x 2 x 4?
Очень просто, результатом будет матрица 4 x 2 x 3. Все мы знаем, что если сложить вместе заглавные буквы каждого измерения матрицы, то получится кортеж (кортеж), этот кортеж называется формой матрицы, я правда не знаю, как перевести это слово, но я Думаю, это называется. Форма не подходит, поэтому сохранен оригинальный английский текст. После транспонирования форма матрицы полностью переворачивается. Например, (3, 2, 4) становится (4, 2, 3).
Можем посмотреть на примере, будет нагляднее. Сначала рассмотрим простейшую двумерную матрицу:
Это случайная двумерная матрица 3 x 4. В numpy есть два способа получить матрицу или транспонировать массив. Первый способ — через массивДобавьте оператор .T после имени переменной, второй способ - вызвать numpy вфункция транспонирования, два способа одинаковы. Лично я предпочитаю первое, которое легче написать.
Мы видим, что первый столбец новой матрицы после транспонирования на самом деле является первой строкой исходной матрицы, а первая строка — первым столбцом исходной матрицы. Его можно увидеть как результат переворота исходной матрицы по невидимой линии из левого верхнего угла в правый нижний угол.
Разобравшись с транспозицией, давайте посмотрим на операцию изменения формы. На самом деле, мы, вероятно, можем догадаться о его значении из этого слова, изменить форму означает снова изменить форму, первоначальное значениеСоберите элементы в матрице в соответствии с формой, которую мы хотим.
Давайте рассмотрим пример.Во-первых, мы используем метод arange для получения одномерного массива:
Поскольку она одномерна, форма, на которую мы смотрим, только одномерна. Предположим, нам не нравится такой одномерный массив, и мы хотим сделать его форматом 3 х 4 или 6 х 2, тогда использование reshape будет очень удобно.
По сути, операция изменения формы на самом деле является операцией получения элементов из матрицы по порядку, а затем заполнения новой матрицы в соответствии с заданной формой. Это не должно быть трудно понять.Это также очень часто используемая операция изменения формы.Посредством изменения формы и транспонирования мы можем легко манипулировать размером матрицы и вносить изменения в соответствии с нашими потребностями.
Тернарное выражение
Во многих языках программирования мы часто используемТернарное выражение, троичное выражение на самом деле является оператором if-else, но мы используем специальный метод для его сокращения.
Например, в C++ мы можем сократить if condition A else B как: condition ? A : B. Python также поддерживает троичные выражения, но в троичные выражения C++ были внесены некоторые изменения.В Python троичные выражения записываются: A, если условие, иначе B. Условно говоря, это более интуитивно понятно, мы часто используем тернарные выражения при инициализации массивов.
Например, мы можем сгенерировать такой массив:
arr = [1 if condition else 0 for _ in range(10)]
Мы генерируем массив, используя условие, чтобы определить, равен ли каждый бит 1 или 0, что упрощает код. Это использование также унаследовано в numpy, мы также можем использовать троичные выражения, но numpy инкапсулирует их вгде функцияСреди них мы реализуем функцию тернарного выражения, вызывая метод. Давайте посмотрим на конкретное использование, предполагая, что у нас есть два массива:
У нас также есть массив типа bool c, и мы хотим выбрать получение данных из массива a или массива b в соответствии с массивом c. Мы можем использовать where, чтобы написать это так:
В этом примере 1 и 0 в массиве c представляют True и False соответственно. Когда мы вызываем np.where, numpy будетАвтоматически выбрать получение данных из массива a или массива b в соответствии со значением в массиве c.. Это эквивалентно выполнению этого фрагмента кода:
[x if c else y for c, x, y in zip(c, a, b)]
Хотя текущие результаты обоих методов одинаковы, очевидно, что расчет с использованием петлевого метода занимает больше времени иИспользование векторного подхода numpy быстрее. Кроме того, метод numpy where также поддерживает многомерные массивы, но метод цикла не работает. И где также есть некоторые более сложные способы использования, такие как второй и третий параметры, которые мы передаем, которые могут быть скаляром вместо массива. Например, мы можем указать, что когда элемент в c равен True, заполните 1, иначе заполните -1:
Мы можем даже комбинировать скаляры и векторы:
И массив c здесь тоже можно заменить логической операцией:
Суммировать
Сегодняшняя статья в основном знакомит с использованием изменения формы, транспонирования и где в Numpy, Это также основное использование numpy, особенно транспонирование и изменение формы, которые почтиМетод, который необходимо использовать для обработки данных. Поэтому, если вы хотите заниматься машинным обучением Python или искусственным интеллектом, вы должны знать об этих способах использования numpy.
В этой статье представлены только некоторые фиксированные процедуры numpy, но на самом деле многие варианты использования numpy можно комбинировать, и некоторые, казалось бы, обыденные использования будут иметь магические эффекты при объединении. Этот пункт трудно исчерпать, читая книги или материалы, поэтому, если вы изучили основы использования этих API, следующее, что вам нужно сделать, это перейти кПрочтите исходный код Даниэля, чтобы увидеть, как большие коровы используют эти инструменты, я думаю, будут новые поступления.
Статья здесь, если вам понравилась эта статья, если можно, пожалуйстаобращать внимание.
В этой статье используетсяmdniceнабор текста