dot
matris çarpımıdır, ancak *
başka bir şey yapar.
İki dizimiz var:
X
, şekil (97,2)
y
, şekil (2; 1)
Numpy dizileriyle, işlem
X * y
öğe bazında yapılır, ancak değerlerden biri veya her ikisi uyumlu hale getirmek için bir veya daha fazla boyutta genişletilebilir. Bu işleme yayın denir. Boyut 1 olan veya eksik olan boyutlar yayınlamada kullanılabilir.
Yukarıdaki örnekte boyutlar uyumsuzdur, çünkü:
97 2
2 1
Burada birinci boyutta (97 ve 2) birbiriyle çelişen sayılar vardır. Yukarıdaki ValueError'ın şikayet ettiği şey budur. İkinci boyut, 1 numara hiçbir şeyle çelişmediği için tamam olacaktır.
Yayın kuralları hakkında daha fazla bilgi için: http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
(Eğer not edin o X
ve y
tiptedir numpy.matrix
, ardından yıldız matris çarpımı olarak kullanılabilir. Benim tavsiye uzak tutmaktır numpy.matrix
, bu basitleştirmek şeyler daha karmaşık hale eğilimindedir.)
Dizileriniz numpy.dot
; üzerinde bir hata numpy.dot
alırsanız, başka bir hatanız olmalıdır. Şekiller yanlışsa numpy.dot
, farklı bir istisna elde edersiniz:
ValueError: matrices are not aligned
Hala bu hatayı alıyorsanız, lütfen sorunun asgari bir örneğini gönderin. Sizinki gibi şekillendirilmiş dizilerle çarpma örneği başarılı olur:
In [1]: import numpy
In [2]: numpy.dot(numpy.ones([97, 2]), numpy.ones([2, 1])).shape
Out[2]: (97, 1)
X*y
işe (ve öyle değil), fakat olmamalıdırnp.dot(X,y)
veX.dot(y))
çalışması gerekir (ve benim için yaptıkları).