Numpy'de dizi yayını kurallarını anlamakta sorun yaşıyorum.Numpy dizisi yayın kuralları
Açıktır ki, aynı boyut ve şekildeki iki dizide öğe-bilge çoğaltması gerçekleştirirseniz, her şey yolundadır. Ayrıca, çok boyutlu bir diziyi bir skaler ile çarptığınızda çalışır. Bu anladım.
Ancak, farklı biçiminde iki N boyutlu diziniz varsa, yayın kurallarının tam olarak ne olduğu açık değildir. Bu documentation/tutorial, aşağıdakileri açıklar: Yayınlamak için, bir işlemdeki her iki dizidesonlandırma eksenlerinin boyutu aynı boyutta olmalıdır veya bunlardan biri bir olmalıdır.
Tamam, bu yüzden bir M x N
dizide N
atıfta bir eksen arka ile varsayalım. Yani, bu, iki 2B diziyi (matrisler) eşit sayıda sütunla çarpmaya çalışırsam işe yarayacak demektir? öyle değil hariç ... A
ve B
hem iki sütun var
>>> from numpy import *
>>> A = array([[1,2],[3,4]])
>>> B = array([[2,3],[4,6],[6,9],[8,12]])
>>> print(A)
[[1 2]
[3 4]]
>>> print(B)
[[ 2 3]
[ 4 6]
[ 6 9]
[ 8 12]]
>>>
>>> A * B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
beri, bu işe sanırdım. Yani, muhtemelen "sondaki eksen" terimi ve N-boyutlu diziler için nasıl geçerli olduğu hakkında bir şey yanlış anlama. Benim örnek çalışmıyor ve ne "eksenini sondaki" ile kastedilen neden
Birisi açıklayabilir misiniz?
Bu, yayın hakkında gerçekten iyi bir yorumdur, http://www.scipy.org/EricsBroadcastingDoc –
"broadcasting" etiketi ekleyebilir misiniz? – denis
@BiRico yorumunda bağlantı * şimdi * arşiv dökümü taşındı Acaba neden http://wiki.scipy.org/EricsBroadcastingDoc olduğunu. – iled