Векторизация этого двойного цикла Numpy

Как я могу векторизовать следующий двойной цикл?

У меня есть одна матрица N на A и одна матрица N на B, где A и B могут отличаться, а N намного меньше, чем A и B. Я хочу создать матрицу A на B следующим образом , но в идеале без циклов:

import numpy as np

def foo(arr):
    # can be anything - just an example so that the code runs
    return np.sum(arr)

num_a = 12
num_b = 8
num_dimensions = 3

a = np.random.rand(num_dimensions, num_a)
b = np.random.rand(num_dimensions, num_b)

# this is the loop I want to eliminate:
output = np.zeros( (num_a, num_b) )
for i in xrange(num_a):
    for j in xrange(num_b):
       output[i,j] = foo(a[:,i] - b[:,j])

Есть идеи?

5
задан YXD 3 March 2014 в 15:18
поделиться