0Pricing
Pandas & NumPy Academy · Lektion

Broadcasting-Regeln

Verstehen Sie die Broadcasting-Regeln von NumPy, damit Sie ein 1D-Array ohne explizite Replikation zu jeder Zeile eines 2D-Arrays addieren können.

Broadcasting-Regeln ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

The Problem Broadcasting Solves

Broadcasting lets NumPy combine arrays of different but compatible shapes without copying data — the smaller one is stretched to fit the larger.

import numpy as np

# Adding a scalar to an array is the simplest broadcast
a = np.array([1, 2, 3])
print(a + 10)  # [11 12 13]
# Scalar 10 is 'broadcast' to shape (3,)

Broadcasting Rule 1: Prepend 1s

NumPy lines up shapes from the right. If one array has fewer dimensions, it pads the left with 1s — so a (3,) array acts like (1, 3) next to a (4, 3) one.

import numpy as np

m = np.ones((4, 3))
v = np.array([10, 20, 30])  # shape (3,) -> treated as (1, 3)

result = m + v   # shape (4, 3)
print(result)
# [[11. 21. 31.]
#  [11. 21. 31.]
#  [11. 21. 31.]
#  [11. 21. 31.]]

Broadcasting Rule 2: Stretch Size-1 Dimensions

Any dimension of size 1 can stretch to match the other array — no data is actually copied. Both arrays can stretch their size-1 dimensions at once.

import numpy as np

# (3, 1) + (1, 4)  -->  (3, 4)
col = np.array([[1], [2], [3]])    # shape (3, 1)
row = np.array([[10, 20, 30, 40]]) # shape (1, 4)
print((col + row).shape)  # (3, 4)
print(col + row)

Broadcasting Rule 3: Incompatible Shapes

If two dimensions aren't equal and neither is 1, broadcasting fails with a ValueError. Checking shapes first gives you a clear error, not a silent bug.

import numpy as np

a = np.ones(3)
b = np.ones(4)
try:
    a + b
except ValueError as e:
    print(e)
# operands could not be broadcast together with shapes (3,) (4,)

Practical: Subtracting the Column Mean

A classic move: subtract each column's mean from every row to centre your data. With keepdims=True, the mean keeps a shape that broadcasts cleanly.

import numpy as np

data = np.array([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

col_mean = data.mean(axis=0)          # shape (3,)
centred = data - col_mean             # broadcast along axis 0
print(centred)
# [[-3. -3. -3.]
#  [ 0.  0.  0.]
#  [ 3.  3.  3.]]

Practical: Row Normalisation

To make each row sum to 1, divide by its row sum. Use keepdims=True so the sum stays shape (n, 1) and broadcasts across the columns.

import numpy as np

m = np.array([[1., 2., 3.],
              [4., 5., 6.]])

row_sums = m.sum(axis=1, keepdims=True)  # shape (2, 1)
normed = m / row_sums
print(normed.round(3))
# [[0.167 0.333 0.5  ]
#  [0.267 0.333 0.4  ]]

Outer Products via Broadcasting

Reshape one array to (n, 1) and another to (1, m), then multiply — broadcasting builds the full outer product matrix for you, no loops needed.

import numpy as np

a = np.array([1, 2, 3])
b = np.array([10, 20, 30, 40])

outer = a[:, np.newaxis] * b[np.newaxis, :]
print(outer)
# [[ 10  20  30  40]
#  [ 20  40  60  80]
#  [ 30  60  90 120]]

Broadcasting with 3-D Arrays

Broadcasting scales to any dimensions. A batch of images shaped (100, 28, 28) can be centred by a per-pixel mean of (1, 28, 28) — NumPy stretches the 1.

import numpy as np

batch = np.random.rand(100, 28, 28)  # 100 images
pixel_mean = batch.mean(axis=0, keepdims=True)  # (1, 28, 28)
centred = batch - pixel_mean          # (100, 28, 28)
print(centred.shape)  # (100, 28, 28)

np.broadcast_to for Explicit Stretching

np.broadcast_to shows you exactly what a broadcast produces, as a read-only view with no copy. It's perfect for picturing how shapes line up.

import numpy as np

a = np.array([1, 2, 3])
view = np.broadcast_to(a, (4, 3))
print(view)
# [[1 2 3]
#  [1 2 3]
#  [1 2 3]
#  [1 2 3]]
print(view.flags.writeable)  # False

Visualising Compatible Shapes

A handy rule: line shapes up from the right and check each pair. They're compatible if they're equal or one is 1. Predict shapes before you run code!

# Shape compatibility examples:
# (3, 4) + (   4) -> (3, 4)  OK: 4==4, 1 implied
# (3, 4) + (3, 1) -> (3, 4)  OK: 4 vs 1, 3==3
# (2, 3, 4) + (3, 4) -> (2, 3, 4)  OK
# (3, 4) + (3,  ) -> ERROR: 4 vs 3
import numpy as np
print(np.zeros((3,4)).shape)       # (3, 4)
print((np.zeros((3,4)) + np.zeros(4)).shape)  # (3, 4)

Common Broadcasting Mistakes

The top broadcasting trap is forgetting keepdims=True after aggregating, so shapes misalign. When stuck, print(arr.shape) to see what's really going on.

import numpy as np

m = np.arange(6).reshape(2, 3)
row_max = m.max(axis=1)            # shape (2,)  NOT (2,1)
print(row_max.shape)               # (2,)
# m - row_max  -> ERROR: shapes (2,3) and (2,) misalign

row_max_col = row_max[:, np.newaxis]  # shape (2, 1)
print((m - row_max_col).shape)     # (2, 3)  OK

Quick Check

Test your understanding of NumPy broadcasting rules from this lesson.

Lesson Recap

You've got it! Broadcasting stretches size-1 dimensions, compares shapes from the right, and keepdims=True keeps axes so math lines up. Next: boolean masking.

Häufig gestellte Fragen

Ist die Lektion „Broadcasting-Regeln“ kostenlos?

Ja — der vollständige Text von „Broadcasting-Regeln“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Broadcasting-Regeln“?

Verstehen Sie die Broadcasting-Regeln von NumPy, damit Sie ein 1D-Array ohne explizite Replikation zu jeder Zeile eines 2D-Arrays addieren können. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Broadcasting-Regeln“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Universelle Funktionen (ufuncs)
  2. Aggregationsfunktionen
  3. Broadcasting-Regeln
  4. Boolesche Maskierung und Fancy Indexing
← Zurück zu Pandas & NumPy Academy