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 中所有行的第三个元素,构成一个一维数组