Изменить массив numpy массивов

Вопрос или проблема

У меня есть массив numpy массивов, и мне нужно добавить ведущий ноль к каждому из внутренних массивов:

a = [[1 2] [3 4] [5 6]] –> b = [[0 1 2] [0 3 4] [0 5 6]]

Выполнять это в цикле:

for item in a:

item = np.insert(item, 0, 0)

не помогает.

Numpy.put() уплощает массив, чего я не хочу.

Есть ли предложения, как мне это сделать? Спасибо

np.insert – вставляет значения вдоль указанной оси перед указанными индексами. Если ось None, массив сначала уплощается.

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.insert(a, 0, 0, axis=1)
print(b)

Результат:

[[0 1 2]
 [0 3 4]
 [0 5 6]]

.

Ответ или решение

Чтобы изменить массив NumPy, содержащий массивы NumPy, и добавить ведущий ноль к каждому из внутренних массивов, вам не обязательно использовать цикл. Ваше решение с использованием функции np.insert является правильным и более эффективным способом добиться желаемого результата. Давайте рассмотрим, как это можно сделать подробно.

Задача

Имеется массив a, состоящий из нескольких подмассивов. Необходимо добавить leading zero к каждому из этих подмассивов, чтобы получить массив b.

Исходные данные:

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])

Ожидаемый результат:

b = np.array([[0, 1, 2], [0, 3, 4], [0, 5, 6]])

Решение

Вместо использования цикла для итерации по каждому элементу массива можно воспользоваться функцией np.insert() следующим образом:

b = np.insert(a, 0, 0, axis=1)

Пояснение:

  • np.insert() принимает следующие основные параметры:
    • arr: исходный массив, который вы хотите изменить (a в нашем случае).
    • obj: индекс, куда вы хотите вставить новые значения. Мы указываем 0, чтобы вставить значения в начало каждого из подмассивов.
    • values: значения, которые мы хотим вставить — здесь это 0.
    • axis: указывает направление операции. Мы указываем axis=1, чтобы выполнить вставку по столбцам.

Результатом выполнения кода выше станет массив b, где перед каждым из столбцов добавлен leading zero.

Полный код

Вот итоговый код для выполнения данной задачи:

import numpy as np

# Исходный массив
a = np.array([[1, 2], [3, 4], [5, 6]])

# Добавление ведущего нуля
b = np.insert(a, 0, 0, axis=1)

# Вывод результата
print(b)

Результат выполнения

Запустив приведенный код, вы получите следующий вывод:

[[0 1 2]
 [0 3 4]
 [0 5 6]]

Заключение

Использование функции np.insert позволяет удобно и эффективно добавлять элементы в массивы NumPy по заданному оси, избегая необходимости в ручной итерации, что может быть менее производительным. Это метод считается оптимальным в данном контексте и соответствует ли требованиям к изменению массивов, представленным в вашем запросе.

Оцените материал
Добавить комментарий

Капча загружается...