Если я правильно понимаю ваш вопрос: Все, что вам нужно сделать, это изменить форму ваших массивов. .
x.shape=(5850,1) # now it is column array
y.shape=(1,5850) # now it is row array
Затем вы можете действовать так же, как в своем исходном сообщении. Результатом будет массив 5850 на 5850. Каждая строка будет соответствовать разным x, и каждый столбец будет соответствовать разным y.
Однако я хотел бы изменить кое-что в вашем коде, чтобы заставить это выглядеть так:
psf = 1/(2*np.pi*sigma_x*sigma_y) * np.exp(-(x*x/(2*sigma_x*sigma_x) + y*y/(2*sigma_y*sigma_y)))
ФОРМАТНО значение, как правило, неэффективно (если ваш компилятор не переводит его умножение, но в Python нет компилятора полагаться на). Квадрагирование намного медленнее, чем умножение. Когда вы берете на себя значение, ваш компьютер должен быть готов к тому, что он может быть отрицательным или что он не является целым числом. При умножении значений нет таких накладных расходов.
Try:
for i in xrange(0,1000000):
z=i**2
for i in xrange(0,1000000):
z=i*i
Formar побежал 0.975s на моей машине, а потом только 0.267s.
Не могли бы вы объяснить на словах, что должно делать это выражение, и, может быть, добавить пример? Потому что, пытаясь понять, чего вы хотите от выражения, не будет работать, поскольку выражение неверно (как вы говорите). –
Являются ли 'x' и' y' ваши 1d массивы? Ваше уравнение просто делает элемент по элементу math на этих 2. Там нет ничего, что говорит «делать какие-то внешние или кросс-вычисления». – hpaulj