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)