Boolean Matrislerini Çarpma
Oct 21 2020
Satır veya sütun sayısından bağımsız olarak, açıkça birden çok 2 Boole matrisi yapmaya çalışıyorum.
Örneğin, eğer A = [[0, 1, 1], [1, 0, 1]]ve B = [[1, 0], [0, 0], [0, 1]],sonra ürün [[0, 1], [1, 1]].
Düzenleme: Bunu açıkça numpy.
Yanıtlar
3 juju89 Oct 20 2020 at 22:18
Bu cevap şunsuz çalışır 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
Numpy'yi yükleyin (pip install 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)
Bu sonucu verir:
[[Yanlış Doğru] [Doğru Doğru]]
[[0,1], [1,1]] ile aynı olan
OlivérPalotás Oct 20 2020 at 22:27
Ben bir cevap buldu gereksiz ithalatı olmadan:
>>> 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
Önce onu ndarray'e aktarabilir ve sonra çarpabilirsiniz.
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)
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'