Mengalikan Matriks Boolean
Oct 21 2020
Saya mencoba untuk secara eksplisit mengalikan 2 matriks Boolean, terlepas dari jumlah baris atau kolomnya.
Misalnya jika A = [[0, 1, 1], [1, 0, 1]]dan B = [[1, 0], [0, 0], [0, 1]],kemudian produknya [[0, 1], [1, 1]].
Sunting: Saya ingin ini secara eksplisit tanpa numpy.
Jawaban
3 juju89 Oct 20 2020 at 22:18
Jawaban ini berfungsi tanpa numpy:
from itertools import starmap
from operator import mul
A = [[0, 1, 1], [1, 0, 1]]
B = [[1, 0], [0, 0], [0, 1]]
result = [[sum(starmap(mul, zip(row, col))) for col in zip(*B)] for row in A]
print(result)
>> [[0, 1], [1, 1]]
1 ReeceBoddington Oct 20 2020 at 22:22
Instal numpy (pip instal numpy)
import numpy as np
a = np.matrix([[0,1,1],[1,0,1]], dtype=bool)
b = np.matrix([[1,0],[0,0],[0,1]], dtype=bool)
print(a*b)
Ini menghasilkan hasil:
[[False True] [True True]]
Yang sama dengan [[0,1], [1,1]]
OlivérPalotás Oct 20 2020 at 22:27
Saya menemukan jawaban tanpa impor yang tidak perlu:
>>> A = [[0, 1, 1], [1, 0, 1]]
>>> B = [[1, 0], [0, 0], [0, 1]]
>>> [[sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*B)] for X_row in A]
[[0, 1], [1, 1]]
mengluo Oct 20 2020 at 22:10
Pertama-tama Anda dapat mentransfernya ke ndarray, lalu menggandakannya.
import numpy as np
A = np.array( [[0, 1, 1], [1, 0, 1]], dtype=bool)
B = np.array([[1, 0], [0, 0], [0, 1]], dtype=bool)
result = np.dot(A, B)
print(result)
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'