Когда я пытаюсь
numpy.newaxis
результат дает мне двухмерный график с осью х от 0 до 1. Однако, когда я пытаюсь использовать numpy.newaxis
для нарезки вектор,
vector[0:4,]
[ 0.04965172 0.04979645 0.04994022 0.05008303]
vector[:, np.newaxis][0:4,]
[[ 0.04965172]
[ 0.04979645]
[ 0.04994022]
[ 0.05008303]]
Это то же самое, за исключением того, что он заменяет вектор строки на вектор столбца?
Какова польза от numpy.newaxis
нее и при каких обстоятельствах мы должны ее использовать?
python
numpy
multidimensional-array
array-broadcasting
numpy-ndarray
Юэ Харриет Хуан
источник
источник
except that it changes a row vector to a column vector?
Первый пример не является вектором строк. Это концепция Matlab. В питоне это просто одномерный вектор без понятия строки или столбца. Векторы строки или столбца являются 2-мерными, как и во втором примереОтветы:
Проще говоря,
numpy.newaxis
используется для увеличения размера существующего массива еще на одно измерение , когда используется один раз . Таким образом,1D массив станет 2D массивом
2D массив станет 3D массивом
3D массив станет 4D массивом
Массив 4D станет массивом 5D
и так далее..
Вот наглядная иллюстрация, которая изображает продвижение 1D массива в 2D массивы.
Сценарий 1 :
np.newaxis
может пригодиться, если вы хотите явно преобразовать одномерный массив в вектор-строку или вектор-столбец , как показано на рисунке выше.Пример:
Сценарий 2 : Когда мы хотим использовать пустое вещание как часть какой-либо операции, например, при добавлении некоторых массивов.
Пример:
Допустим, вы хотите добавить следующие два массива:
Если вы попытаетесь добавить это просто так, NumPy выдаст следующее
ValueError
:В этой ситуации вы можете использовать,
np.newaxis
чтобы увеличить размерность одного из массивов, чтобы NumPy мог транслировать .Теперь добавьте:
Также вы можете добавить новую ось в массив
x2
:Теперь добавьте:
Примечание : обратите внимание, что мы получаем одинаковый результат в обоих случаях (но один является транспонированием другого).
Сценарий-3 : Это похоже на сценарий-1. Но, вы можете использовать
np.newaxis
более чем один раз , чтобы продвигать массив в более высокие измерения. Такая операция иногда необходима для массивов более высокого порядка ( т. Е. Тензоров ).Пример:
Больше информации о np.newaxis vs np.reshape
newaxis
также называется псевдоиндексом, который позволяет временно добавлять ось в многорядную матрицу.np.newaxis
использует оператор нарезки для воссоздания массива, в то время какnp.reshape
преобразует массив в желаемый макет (при условии, что размеры совпадают; и это необходимо дляreshape
произойдет).пример
В приведенном выше примере мы вставили временную ось между первой и второй осями
B
(для использования трансляции). Здесь заполняется отсутствующая ось,np.newaxis
чтобы заставить работу вещания работать.Общий совет : вы также можете использовать
None
вместоnp.newaxis
; На самом деле это одни и те же объекты .PS Также см. Этот отличный ответ: newaxis vs reshape, чтобы добавить размеры
источник
Что такое
np.newaxis
?Это
np.newaxis
просто псевдоним для константы PythonNone
, что означает, что везде, где вы используете,np.newaxis
вы также можете использоватьNone
:Это просто более наглядно, если вы читаете код, который использует
np.newaxis
вместоNone
.Как использовать
np.newaxis
?np.newaxis
, Как правило , используются с нарезкой. Это указывает на то, что вы хотите добавить дополнительное измерение в массив. Положениеnp.newaxis
представляет, где я хочу добавить размеры.В первом примере я использую все элементы из первого измерения и добавляю второе измерение:
Второй пример добавляет измерение в качестве первого измерения, а затем использует все элементы из первого измерения исходного массива в качестве элементов во втором измерении результирующего массива:
Точно так же вы можете использовать несколько,
np.newaxis
чтобы добавить несколько измерений:Есть ли альтернативы
np.newaxis
?В NumPy: есть еще одна очень похожая функциональность
np.expand_dims
, которую также можно использовать для вставки одного измерения:Но, учитывая, что он просто вставляет
1
s в массив,shape
вы такжеreshape
можете добавить эти измерения:В большинстве случаев
np.newaxis
это самый простой способ добавить размеры, но хорошо знать альтернативы.Когда использовать
np.newaxis
?В нескольких контекстах добавление измерений полезно:
Если данные должны иметь указанное количество измерений. Например, если вы хотите использовать
matplotlib.pyplot.imshow
для отображения одномерного массива.Если вы хотите, чтобы NumPy транслировал массивы. Добавляя измерение можно, например , получить разницу между всеми элементами одного массива:
a - a[:, np.newaxis]
. Это работает, потому что операции NumPy транслируются, начиная с последнего измерения 1 .Чтобы добавить необходимое измерение, чтобы NumPy мог транслировать массивы. Это работает , потому что каждая длина-1 измерение просто транслируется на длину соответствующего 1 размерность другого массива.
1 Если вы хотите узнать больше о правилах вещания, документация NumPy на эту тему очень хороша. Это также включает пример с
np.newaxis
:источник
Вы начали с одномерного списка чисел. Как только вы использовали
numpy.newaxis
, вы превратили его в двумерную матрицу, состоящую из четырех строк по одному столбцу в каждой.Затем вы можете использовать эту матрицу для умножения матриц или задействовать ее в построении более крупной матрицы 4хn.
источник
newaxis
Объект в кортеже выбора служит для расширения размеров результирующего выбора на одно измерение единичной длины .Это не просто преобразование матрицы строк в матрицу столбцов.
Рассмотрим пример ниже:
Теперь давайте добавим новое измерение к нашим данным,
Вы можете видеть, что здесь
newaxis
добавлено дополнительное измерение, x1 имеет измерение (3,3), а X1_new имеет измерение (3,1,3).Как наше новое измерение позволяет нам выполнять различные операции:
Добавив x1_new и x2, мы получим:
Таким образом,
newaxis
это не просто преобразование строки в матрицу столбца. Это увеличивает размерность матрицы, что позволяет нам делать больше операций над ней.источник
ndarray
терминологией NumPy.