1、一般使用索引赋值
赋值方式和C#和Java待语言类似,如下,
import numpy as np arry = np.zeros((2,5)) arry[1][2] = 1 arry[0][4] = 10 print(arry)
2、使用切片赋值
NumPy中的数组切片是从一个数组中选择子集或特定区域的元素。切片的语法与Python列表切片类似,但更加强大和灵活。
import numpy as np arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 选择索引1到4的元素(不包括4) arr[1:4] = -1 print("*"*36) print(arr) # 结果为 [1, 2, 3] arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 选择索引2到末尾的元素 arr[2:] = -2 print("*"*36) print(arr) # 结果为 [2, 3, 4, 5, 6, 7, 8, 9] arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 选择索引从开头到3的元素(不包括3) arr[:3] = -3 print("*"*36) print(arr) # 结果为 [0, 1, 2] arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 选择从索引1开始,以步长2选择元素 arr[1::2] = 100 # 结果为 [1, 3, 5, 7, 9] print(arr) print("*"*36) print("*************多维数组切片*************") arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) # 选择第一行的所有元素 arr[0, :] = -1 # 结果为 [1, 2, 3] print("*"*36) print(arr) arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) # 选择第二列的所有元素 arr[:, 1] = -2 # 结果为 [2, 5, 8] print("*"*36) print(arr) arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) # 选择子矩阵,例如左上角的2x2矩阵 arr[:2, :2] = -3 # 结果为 [[1, 2], [4, 5]] print("*"*36) print(arr) arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) # 选择多个元素 arr[[1,2,0],[1,2,4]] = -3 print("*"*36) print(arr)
3、使用布尔索引赋值
在NumPy中,布尔索引赋值是一种可以使用布尔数组来选择和赋值数组元素,如下,
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) print(arr) mask = arr > 10 print(mask) print("*"*36) arr[mask] = 0 print(arr)
4、使用numpy.where赋值
NumPy的 numpy.where
函数用于根据指定的条件从两个数组中选择元素。相当于Python中的三元运算符,如下,
import numpy as np # 创建条件数组 condition = np.array([True, False, True, False]) # 创建两个数组 x = np.array([1, 2, 3, 4]) y = np.array([10, 20, 30, 40]) # 根据条件选择元素 result = np.where(condition, x, y) print(result)
5、使用numpy.clip赋值
numpy.clip
是NumPy库中的一个函数,用于将数组中的值限制在指定的范围内。如下,
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [ 6, 7, 8, 12, 13], [17, 18, 9, 10, 11]]) print(arr) print("*"*36) # 将数组中小于2的元素设为2,大于4的元素设为4 clipped_arr = np.clip(arr, 2, 4) print(clipped_arr)