Tildeling af Værdier til Indekserede Subarrays
Med indekserede arrays begynder tingene at blive mere interessante. Her vil vi fokusere på 1D og 2D underarrays, da 3D underarrays sjældent bruges i praksis.
Lad os først starte med at tildele værdier til slices. Den generelle syntaks ser sådan ud: slice = values
, hvor slice
er en slice af en bestemt array og values
er de værdier, der skal tildeles.
Mulige formater for values
:
en enkelt skalar (tal);
en 1D array af samme størrelse som slicen (hvis den er 1D); eller størrelsen af den anden dimension (hvis slicen er 2D);
en 2D array af samme form som en 2D slice.
import numpy as np array_1d = np.array([1, 4, 6, 2, 9]) # Assigning an array to the slice of array_1d array_1d[1:-1] = np.array([3, 5, 7]) print(array_1d) # Assigning a scalar to the slice of array_1d array_1d[1:-1] = 5 print(array_1d) array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) # Assigning a 2D array to the slice of array_2d array_2d[1:3, 1:] = np.array([[20, 21], [40, 41]]) print(array_2d) # Assigning a 1D array to the slice of array_2d array_2d[1:3, 1:] = [50, 51] print(array_2d) # Assigning a scalar to the slice of array_2d array_2d[1:3, 1:] = 30 print(array_2d)
Når vi tildeler en skalar til et 1D-udsnit, tildeles denne skalar til hver element i udsnittet. Når en 1D-array tildeles til et 2D-udsnit, tildeles denne 1D-array til hver 1D-array i udsnittet. Tildeling af en skalar til et 2D-udsnit fungerer på samme måde som med et 1D-udsnit.
Tildeling af værdier til heltalsarray-indekserede underarrays fungerer på samme måde som med udsnit. Tildeling af værdier til boolesk indekserede underarrays fungerer på samme måde som med 1D-udsnit.
Swipe to start coding
Du administrerer et datasæt af produktpriser og vurderinger. Priserne er gemt i prices
arrayet, og vurderingerne (ud af 10) er gemt i ratings
arrayet, hvor hver række repræsenterer en forskellig produktkategori. Din opgave er at opdatere priserne og vurderingerne baseret på specifikke kriterier:
- Tildel værdien
20
til hvert element iprices
større end 10 (boolesk indeksering) ved hjælp af en skalar. - Tildel en NumPy array med elementerne
9
,8
til de sidste to elementer i den anden række (anden 1D-array) afratings
. Brug en positiv rækkeindeks og et udsnit der kun specificererstart
(positiv indeks).
Løsning
Tak for dine kommentarer!