Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Tilldela Värden till Indexerade Delarrayer | Indexering och Skivning
Ultimata NumPy

book
Tilldela Värden till Indexerade Delarrayer

Med indexerade arrayer börjar saker och ting bli mer intressanta. Här kommer vi att fokusera på 1D och 2D delarrayer, eftersom 3D delarrayer sällan används i praktiken.

Låt oss först börja med att tilldela värden till skivor. Den allmänna syntaxen ser ut så här: slice = values, där slice är en skiva av en viss array och values är de värden som ska tilldelas.

Möjliga format för values:

  • en enskild skalar (nummer);
  • en 1D array av samma storlek som skivan (om den är 1D); eller storleken på den andra dimensionen (om skivan är 2D);
  • en 2D array av samma form som en 2D skiva.
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)
123456789101112131415161718
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)
copy

När vi tilldelar en skalar till en 1D-skiva, tilldelas denna skalar till varje element i skivan. När en 1D-array tilldelas en 2D-skiva, tilldelas denna 1D-array till varje 1D-array i skivan. Att tilldela en skalar till en 2D-skiva fungerar på samma sätt som med en 1D-skiva.

Att tilldela värden till heltal array indexerade delarrayer fungerar på samma sätt som med skivor. Att tilldela värden till boolean indexerade delarrayer fungerar på samma sätt som med 1D-skivor.

Uppgift

Swipe to start coding

Du hanterar en dataset av produktpriser och betyg. Priserna lagras i prices arrayen, och betygen (av 10) lagras i ratings arrayen, där varje rad representerar en olika produktkategori. Din uppgift är att uppdatera priserna och betygen baserat på specifika kriterier:

  1. Tilldela värdet 20 till varje element i prices som är större än 10 (boolean indexering) med en skalar.
  2. Tilldela en NumPy array med elementen 9, 8 till de sista två elementen i den andra raden (andra 1D-arrayen) av ratings. Använd en positiv radindex och en skiva som endast specificerar start (positiv index).

Lösning

import numpy as np
# Product prices
prices = np.array([15, 8, 22, 7, 12, 5])
# Assign 20 to every price greater than 10
prices[prices > 10] = 20
# Product ratings for two categories over three criteria
ratings = np.array([[6, 8, 9], [7, 5, 10]])
# Assign an array with elements 9, 8 to the last two elements of the second row of ratings
ratings[1, 1:] = np.array([9, 8])
print(prices)
print(ratings)
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 10
import numpy as np
# Product prices
prices = np.array([15, 8, 22, 7, 12, 5])
# Assign 20 to every price greater than 10
___[___] = ___
# Product ratings for two categories over three criteria
ratings = np.array([[6, 8, 9], [7, 5, 10]])
# Assign an array with elements 9, 8 to the last two elements of the second row of ratings
___[___, ___] = ___
print(prices)
print(ratings)
toggle bottom row
some-alt