numpy
np.where
np.where
是NumPy中的一个函数,用于根据条件返回数组中的元素。
np.where
的第一个参数是一个布尔数组,表示条件。如果条件为True
,则返回第二个参数中的元素,否则返回第三个参数中的元素。
果省略第二个和第三个参数,则返回一个元组,其中包含满足条件的元素的索引。
以下是np.where
的一些示例用法:
import numpy as np
# 返回满足条件的元素的索引
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 3)
print(indices) # 输出 (array([3, 4]),)
# 返回满足条件的元素
arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 3, arr, 0)
print(result) # 输出 [0 0 0 4 5]
# 将数组中的元素限制在一个范围内
arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr < 3, 3, np.where(arr > 4, 4, arr))
print(result) # 输出 [3 3 3 4 4]
np.ma
np.ma.array
np.ma.array
是NumPy中的一个函数,用于创建掩码数组。掩码数组是一种特殊的数组,其中某些元素被标记为无效或无用。掩码数组可以用于处理缺失数据或无效数据。
np.ma.array
的用法与NumPy的普通数组类似,但它允许您指定一个掩码数组,该数组指示哪些元素是无效的。**(注意,True 对应的元素会被删除,False 对应的元素会被保留)**以下是np.ma.array
的一些示例用法:
import numpy as np
# 创建一个掩码数组
arr = np.ma.array([1, 2, 3, 4, 5], mask=[False, False, True, False, True])
print(arr) # 输出 [1 2 -- 4 --]
# 访问掩码数组中的元素
print(arr[2]) # 输出 --(表示无效值)
# 访问掩码数组中的有效元素
print(arr[~arr.mask]) # 输出 [1 2 4]
# 对掩码数组进行算术运算
arr1 = np.ma.array([1, 2, 3, 4, 5], mask=[False, False, True, False, True])
arr2 = np.ma.array([1, 2, 3, 4, 5], mask=[False, True, False, True, False])
result = arr1 + arr2
print(result) # 输出 [2 -- -- -- --]
在这个代码片段中,np.ma.array
被用来创建一个掩码数组,以便在选择最佳操作时排除无效的操作。掩码数组的长度与操作数相同,其中每个元素表示相应操作是否有效。如果操作是有效的,则相应的数组元素为False
,否则为True
。
np.ma.argmax
G np.ma.argmax
是NumPy中的一个函数,用于返回掩码数组中有效元素的最大值的索引。np.ma.argmax
函数会忽略掩码数组中的无效元素.
以下是np.ma.argmax
的一些示例用法:
import numpy as np
# 创建一个掩码数组
arr = np.ma.array([1, 2, 3, 4, 5], mask=[False, False, True, False, True])
# 返回有效元素的最大值的索引
max_index = np.ma.argmax(arr)
print(max_index) # 输出 3
# 返回有效元素的最大值
max_value = arr[max_index]
print(max_value) # 输出 4
ndarray 的索引
1
假设 a=np.zero((2, 4, 6, 8))
那么 a[1]
得到的 ndarray 的形状是 (4,6,8)
而 a[:1]
得到的 ndarray 的形状是 (1, 4, 6, 8)
2
array[:][2]
和 array[:,2]
这两种索引方式有明显的区别。
array[:][2]
这种索引方式首先会获取 array 的所有行,得到一个新的二维数组。然后,再从这个新数组中获取第三行。所以 array[:][2] 实际上是获取 array 的第三行。
array[:,2]
这种索引方式是获取 array 的第三列。: 表示选择所有行,2 表示选择第三列。所以 array[:,2]
会给你 array 中所有行的第三个元素,构成一个一维数组。