dotadalah perkalian matriks, tetapi *melakukan hal lain.
Kami memiliki dua array:
X, bentuk (97,2)
y, bentuk (2,1)
Dengan array Numpy, operasinya
X * y
dilakukan berdasarkan elemen, tetapi satu atau kedua nilai dapat diperluas dalam satu atau beberapa dimensi untuk membuatnya kompatibel. Operasi ini disebut penyiaran. Dimensi dengan ukuran 1 atau yang hilang dapat digunakan dalam penyiaran.
Dalam contoh di atas dimensi tidak sesuai, karena:
97 2
2 1
Di sini ada angka-angka yang saling bertentangan di dimensi pertama (97 dan 2). Itulah yang dikeluhkan ValueError di atas. Dimensi kedua akan baik-baik saja, karena nomor 1 tidak bertentangan dengan apa pun.
Untuk informasi lebih lanjut tentang aturan penyiaran: http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
(Perlu diketahui bahwa jika Xdan ybertipe numpy.matrix, maka tanda bintang dapat digunakan sebagai perkalian matriks. Rekomendasi saya adalah menjauhinumpy.matrix , ini cenderung mempersulit lebih dari sekedar menyederhanakan.)
Array Anda harus baik-baik saja dengan numpy.dot; jika Anda mendapatkan kesalahan numpy.dot, Anda pasti memiliki bug lain. Jika bentuknya salah numpy.dot, Anda mendapatkan pengecualian yang berbeda:
ValueError: matrices are not aligned
Jika Anda masih mendapatkan kesalahan ini, harap posting contoh masalah minimal. Contoh perkalian dengan array berbentuk seperti milik Anda berhasil:
In [1]: import numpy
In [2]: numpy.dot(numpy.ones([97, 2]), numpy.ones([2, 1])).shape
Out[2]: (97, 1)
X*yseharusnya tidak bekerja (dan tidak), tetapinp.dot(X,y)danX.dot(y))harus berhasil (dan bagi saya mereka berhasil).