Есть ли какой-либо способ сопоставить массивы и вернуть массив в Python?

#python #list #map

#python #Список #словарь

Вопрос:

Я собираюсь оперировать массивом, выполнить некоторые вычисления для каждой строки данных и вернуть массив. например:

 a = [[1,4], [2,5], [3, 6]]
def op(x):
    return x[0] - x[1], x[0] x[1]
c = map(op, a) #[(-3, 5), (-3, 7), (-3, 9)]
d, e = zip(*c)
print d, e
  

но я обнаружил, что c — это массив кортежей. Итак, мне пришлось распаковать c.
Есть ли способ для map вернуть массив? Большое спасибо.
Я знаю, что могу преобразовать c в массив с помощью numpy.asarray. есть идея получше?

Комментарии:

1. Массив — это тип numpy. Ваш a представляет собой список списков. Это то, что вы хотели бы иметь в качестве результирующего значения map ? thefourtheye ниже показано, как это сделать. Однако, если у вас большие списки, попробуйте использовать массивы Numpy, они очень просты и эффективны для такого рода вычислений.

2. @DrV Спасибо. Я перепутал концепцию. Я буду использовать numpy array.

Ответ №1:

Когда вы говорите

 return a, b
  

Python создаст кортеж и вернет его. Итак, нам нужно явно создать список и вернуть его следующим образом

 def op(x):
    return [x[0] - x[1], x[0]   x[1]]