2015-06-08 2 views
-1

У меня есть массив внутри списка, и я хочу подсчитать количество элементов в массиве из двух разных списков вместо подсчета элементов списка.Подсчитайте элемент массива внутри списка

код

import numpy as np 
def count_total(a,b): 
#count the total number of element for two arrays in different list 
x,y=len(a),len(b) 
result=[] 
for a1 in a: 
    for b2 in b: 
     result.append(x+y) 
return result 

a=[np.array([2,2,1,2]),np.array([1,3])] 
b=[np.array([4,2,1])] 
c=[np.array([1,2]),np.array([4,3])] 

print(count_total(a,b)) 
print(count_total(a,c)) 
print(count_total(b,c)) 

Фактический выход

[3, 3] 
[4, 4, 4, 4] 
[3, 3] 

Желаемая выход

[7,5] 
[6,6,4,4] 
[5,5] 

Может кто-нибудь помочь?

+0

Это не ясно, как ваш желаемый результат соответствует вашему входу. – user2357112

ответ

2

Мне кажется, что вам нужны все возможные способы суммирования длины массивов. Этого можно достичь с помощью itertools.product. Вот мой код:

from itertools import product 

def count_total(a,b): 
    return [sum(map(len, i)) for i in product(a, b)] 

Продукт возвращает все возможные приспособления для каждого элемента каждый из a и b. Затем для каждой компоновки мы берем len частей в расположении из каждого списка, затем добавляем их вместе с sum.

+0

Спасибо. Это действительно полезно – Xiong89

0

Ошибка в строке 4, x и y назначаются длины списков, а не длины массива.

Заменить линии 4-8

x,y=len(a),len(b) 
result=[] 
for a1 in a: 
    for b2 in b: 
     result.append(x+y) 

с

y= lambda x:len(x) 
result=[] 
for a1 in a: 
    for b1 in b: 
     result.append(y(a1) + y(b1)) 
Смежные вопросы