Пока не формальный ответ, я хотел бы, чтобы забрать свое любопытство и заставить вас представить себе мир возможностей, вытекающих из вашего вопроса. Если по какой-то причине вы не хотите использовать numpy, и вам просто интересно, как сделать сумму всех элементов в списке только в одной строке, вы можете переопределить операцию между списками. Это может быть достигнуто путем определения очень простой класс, как следующему:
class array():
def __init__(self, mylist):
self.list = mylist
return
def __add__(self, other):
for i in xrange(len(self.list)):
self.list[i] += other.list[i]
return array(self.list)
def __repr__(self):
return "%s" % (self.list)
Вы можете видеть, что класс экземпляра, используя список питона, а затем я определяю __add__
метод, по существу, указывают, как массив объекты взаимодействуют под символом +. Конечно, здесь есть много возможностей для его улучшения и проверки исключений, но это только для того, чтобы подчеркнуть тот факт, что вы можете определить все, что захотите. Вы можете видеть, что добавление двух объектов массива возвращает новый объект массива, который позволяет нам продолжать добавлять.
Только для вас, чтобы увидеть, как это работает, ниже я пишу очень простой пример:
A = array([1,2,3,4,5])
B = array([3,2,4,5,6])
C = A+B
Затем, если вы наберете C в строке, вы увидите
[4, 4, 7, 9, 11]
который снова это класс массива.
Эта (векторизация) - одна из главных причин использования numpy over lists при выполнении артмиты. Насколько я знаю, вы не можете сделать это на родном python, не вызывая для цикла for или list. Из любопытства, почему вы хотите работать за пределами numpy для таких операций? –
Если я использую numpy.asarray в списке объектов, я буду иметь возможность векторизации прямо на аргументы объектов на numpy.array? Он сообщает мне AttributeError: 'numpy.ndarray 'не имеет атрибута' r ' – Phaune
@Phaune, что вам нужно сделать, это создать 3 массива numpy, по одному для каждого свойства, выполнить векторную операцию (что будет намного более эффективно), а затем установить значения в исходном списке объектов. –