#python #numpy
#python #numpy
Вопрос:
У меня есть один массив, и я хочу преобразовать его в определенную форму, которую я не знаю, как сделать.
Я пытался, но это не дало мне должного результата.
Вот массив-: это массив numpy
a=[[ [1,2,13],
[12,2,32],
[61,2,6],
[1,23,3],
[1,21,3],
[91,2,38] ]]
ожидаемые результаты-:
1. [[ [1,2],
[12,2],
[61,2],
[1,23],
[1,21],
[91,2] ]]
2. [ [1,2],
[12,2],
[61,2],
[1,23],
[1,21],
[91,2] ]
Комментарии:
1. Зачем вам нужны два одинаковых вывода? Почему входные данные имеют первое измерение длиной 1? Почему вы отбрасываете треть данных?
2. преобразуйте список в ndarray, затем попробуйте
print(a[:, 0:, 1:])
3. «Я пытался, но это не дает мне должного результата». Хорошо, что ты пробовал? И какой результат это дало вам? И каковы были ваши доводы в пользу того, чтобы попробовать это?
Ответ №1:
Итак, вопрос можно свести к
«Учитывая трехмерный массив numpy с формой (1, 6, 3)
, как мы можем сделать копию, кроме формы (1, 6, 2)
, удалив последнее индексированное значение из самого внутреннего вложенного массива?»
Индексация массива
В приведенном ниже примере это достигается путем нарезки исходного массива ( a
), чтобы вернуть желаемую структуру.
import numpy as np
a = np.array([[[1,2,13],[12,2,32],[61,2,6],[1,23,3],[1,21,3],[91,2,38]]])
o = a[:,:,:2]
Понимание списка
Ниже используется понимание списка, применяемое для фильтрации a
вниз способом, описанным выше.
import numpy as np
a = np.array([[[1,2,13],[12,2,32],[61,2,6],[1,23,3],[1,21,3],[91,2,38]]])
o = np.array([[j[:2] for i in a for j in i]])
В каждом из приведенных выше примеров o
будет ссылаться на следующий массив (первый вывод, который вы запрашиваете).
array([[[ 1, 2],
[12, 2],
[61, 2],
[ 1, 23],
[ 1, 21],
[91, 2]]])
Учитывая o
, как определено в одном из приведенных выше примеров, ваш второй искомый результат доступен через o[0]
.
Комментарии:
1. Почему не индексирование массива?
a[:, :2]
2. @hpaulj Хорошая мысль! Обновленный ответ, чтобы выделить эту опцию — хотя из-за структуры, определенной в вопросе OP, правильный фрагмент для желаемого результата будет
a[:,:,:2]
.3. @JPI93 Спасибо за ваш ответ !!, можете ли вы сказать мне, что делать для 2-го вывода?
4. @Jose обновил ответ. Короче говоря, ваш второй вывод доступен через
o[0]
.
Ответ №2:
Это сделает
import numpy as np
a=[[ [1,2,13],
[12,2,32],
[61,2,6],
[1,23,3],
[1,21,3],
[91,2,38] ]]
outputs=list()
for i in a[0]:
outputs.append([i[0],i[1]])
print(np.array([outputs]))
""" OUTPUTS
[[[ 1 2]
[12 2]
[61 2]
[ 1 23]
[ 1 21]
[91 2]]]
"""
Комментарии:
1. Спасибо за ваш ответ !!, можете ли вы сказать мне, что делать для 2-го вывода?
2. это даст результат 2
print(np.array(outputs))