#python #arrays #numpy #indexing #slice
#python #массивы #numpy #индексирование #срез
Вопрос:
Прошу прощения, если на этот вопрос есть элементарный ответ, но я пока не смог его найти.
У меня есть некоторые данные, которые изначально были numpy
массивом shape (N, M)
, но где определенные столбцы затем были удалены. Для иллюстрации допустим M=6
, и 2 столбца, где они удалены, оставляя (N, 4)
массив. У меня также есть массив, обозначающий, был ли сохранен столбец или нет с логическим значением ( True
если сохранен, False
если нет), например array([False, True, True, False, True, True])
.
Что я хотел бы сделать, так это восстановить (N, 6)
массив из (N, 4)
массива и логических маркеров, при этом столбцы будут повторно введены с правильным индексом (заполнены нулями).
Любая помощь в отношении необходимых подходов к нарезке и т. Д. Была Бы оценена!
Комментарии:
1. Вы должны иметь возможность создать новый массив
np.insert
, используя[0, 3]
позиции вставки в качестве аргумента. Но прочитайте его документы. Но нетрудно создать новый массив напрямую.
Ответ №1:
Давайте попробуем это:
# original array -- for references only
arr = np.arange(12).reshape(-1,6)
# keep indexes
keep = np.array([False, True, True, False, True, True])
# array after removing the columns
removed_arr = arr[:,keep]
# output array
out = np.zeros((removed_arr.shape[0], len(keep)), dtype=removed_arr.dtype)
# copy the values of `removed_arr` to output
out[:, keep] = removed_arr
Вывод:
array([[ 0, 1, 2, 0, 4, 5],
[ 0, 7, 8, 0, 10, 11]])