Скажем, у меня есть массив полный со многими экземплярами классаNumPy найти среднее из экземпляров класса (перебирать элементы экземпляров)
a = np.array([[A(2, 10)], [A(3, 15)], [A(4, 14)]])
Как я могу вычислить, используя NumPy среднее из первых A
только индексов.
Следовательно, среднее значение 2, 3, 4?
Один из способов:
thenew = np.zeros((a.size, a.size))
for idx, x in np.ndenumerate(a):
thenew[idx] = a[idx].a
result = np.average(thenew[:,0])
, но я ищу лучшее решение с использованием NumPy.
Полный код:
import numpy as np
class A():
def __init__(self, a, b):
self.a = a
self.b = b
class B():
def __init__(self, c, d, the_a):
self.c = c
self.d = d
self.the_a = the_a
def method(self, the_a):
thenew = np.zeros((self.the_a.size, self.the_a.size))
for idx, x in np.ndenumerate(self.the_a):
thenew[idx] = self.the_a[idx].a
return np.average(thenew[:,0])
a = np.array([[ A(2, 4)], [A(3,5)], [A(4,4)]])
b = B(1,1,a)
print(b.method(a))
Nice, спасибо, я просто хочу спросить, кстати, как индексирование работает в этом case.I имею в виду, 'х [0] .a' дает нам первые элементы, ok.Would мы когда-либо использовать 'x [1] .a'? (upvoted) – George
Нет, вам нужно' x [0] ', потому что ваши экземпляры находятся в' [] ', т.е. '[A (2, 10)]'. Используйте 'np.average ([x [0] .b для x в a])' для второго элемента. Если вы не добавили несколько экземпляров в под-список (второе измерение): '[A (2, 10), A (3, 15)]'. –
О, да. Я бы использовал 'x [1]', если бы я [A (2,10), A (3,4)] ' – George