#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]]