Лучший способ вычислить умножение логической матрицы в numpyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Лучший способ вычислить умножение логической матрицы в numpy

Сообщение Anonymous »

Я хочу вычислить матричное произведение логического массива с его транспонированием:

Код: Выделить всё

import numpy as np
a = np.array([[1, 0, 1], [1, 1, 0]], dtype=bool)
Какой лучший/самый быстрый способ сделать это?
Я сделал несколько попыток:
Попытка 1

Код: Выделить всё

out1 = np.matmul(a, a.T)
print(out1)
[[ True True] [ True True]]

Просто применяю np .matmul не работает из-за переполнения.

Попытка 2
Так я и придумал с идеей передать выходной массив np.uint64 в функцию: тоже не работает. Похоже, что сумма вычисляется с помощью логических значений, а затем приводится к uint64.

Код: Выделить всё

out2 = np.zeros((2, 2), dtype=np.uint64)
np.matmul(a, a.T, out=out2)
print(out2)
[[1 1] [1 1]]


Попытка 3
Ручное вычисление произведения строка*столбец с последующим вызовом суммы работает: но это занимает слишком много памяти, так как сохраняет все результаты произведения перед их суммированием.< /p>

Код: Выделить всё

out3 = (a[None,:, :] * a[:, None, :]).sum(axis=-1)
print(out3)
[[2 1] [1 2]]


Попытка 4
Я попробовал привести массив перед вычислением: тоже работает. Но приведение входного массива занимает 64 раза больше памяти, и я предполагаю, что умножение занимает больше времени, если оно выполняется с помощью uint64, по сравнению с двумя логическими значениями.

Код: Выделить всё

out4 = np.matmul(a.astype(np.uint64), a.T)
print(out4)
[[2 1] [1 2]]


Есть ли лучшее решение этой проблемы, которое я мог бы рассмотреть?

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-in-numpy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Лучший способ вычислить умножение логической матрицы в numpy
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ вычислить умножение логической матрицы в numpy
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ вычислить умножение логической матрицы в numpy
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Умножение матрицы Python – размер матрицы результата
    Anonymous » » в форуме Python
    0 Ответы
    109 Просмотры
    Последнее сообщение Anonymous
  • Действителен ли этот тест? torch vs numpy vs tinygrad умножение матрицы 10000 на 10000 (ЦП)
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»