Как заменить циклы for матричными операциями?

В вашем файле settingsins.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
)

Ваше представление может выглядеть так.

from django.shortcuts import render_to_response, render
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext

@login_required()
def index_admin(request):
    return render_to_response('carteras/index_admin.html', {}, context_instance=RequestContext(request))
0
задан egjada 18 January 2019 в 13:21
поделиться

1 ответ

Моя интерпретация заключается в том, что A и B являются массивами NumPy с размерами h * w * 3 * 3.

Простейшим способом использования операций с массивами для нахождения квадрата расстояния между матрицами 3 на 3 A[i,j,:,:] и B[i,j,:,:] для каждого i,j является запись:

distances = np.sum((A-B)**2, axis=(2,3))

, т.е. просто возводя в квадрат все и суммируя по двум последним осям.

Это включает в себя создание некоторых ненужных временных массивов (A-B, затем его квадрат), поэтому, если вам нужна предельная эффективность , вы можете использовать другую опцию, например, цикл с джиттом для Numba, который выполняется [117 ] для каждой пары из A[i,j,:,:] и B[i,j,:,:]. Но вряд ли это ваше узкое место.

0
ответ дан macroeconomist 18 January 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: