##### numpy 通用函数可选关键字参数 - 所有 ufuns 都带有可选的关键字参数。其中大多数代表高级用法,通常不会被使用。 ##### **out:** - 这是一个用于存储计算结果的数组。您可以提供一个现有的数组,以便将计算结果存储在其中,而不是创建一个新的数组 ```python import numpy as np x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) result = np.add(x, y, out=x) # 将计算结果存储在数组x中 ``` ##### **where:** - 这个参数用于指定条件,只有满足条件的元素才会参与计算。可以是一个布尔数组或条件表达式 ```python import numpy as np x = np.array([1, 2, 3, 4, 5]) y = np.array([5, 4, 3, 2, 1]) condition = x > 2 result = np.add(x, y, where=condition) # 仅对满足条件的元素进行计算 ``` ##### **dtype:** - 这个参数用于指定输出数组的数据类型。默认情况下,NumPy会根据输入数组的数据类型来选择合适的数据类型 ```python import numpy as np x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) result = np.add(x, y, dtype=np.float64) # 指定输出数据类型为float64 ``` ##### **casting:** 如果输出数据类型与输入数据类型不兼容,casting参数可以用来指定数据类型转换的行为。可以设置为"no"、"equiv"、"safe"、"same_kind"、"unsafe"等 ```python import numpy as np x = np.array([1, 2, 3]) y = np.array([0.5, 1.5, 2.5]) result = np.add(x, y, casting="unsafe") # 允许不安全的数据类型转换 ``` ##### **order:** 如果输入数组是多维数组,order参数可以用于指定输出数组的内存布局顺序("C"表示C顺序,"F"表示Fortran顺序) ```python import numpy as np x = np.array([[1, 2], [3, 4]]) y = np.array([[5, 6], [7, 8]]) result = np.add(x, y, order="F") # 指定输出数组的内存布局为Fortran顺序 ``` ##### **axes:** - 使用广义 ufunc 应该操作的轴索引的元组列表 ##### **axis:** - 一个广义 ufunc 应该在其上运行的单轴 ```python import numpy as np arr = np.array([[1, 2], [3, 4], [5, 6]]) sums_along_axis_0 = np.sum(arr, axis=0) # 沿着第0个轴计算和 ``` ##### **keepdims:** - 一个布尔值,指示是否保持输出数组的维度。如果设置为True,输出数组将保留原始数组的维度,而在相应的轴上插入大小为1的维度 ```python import numpy as np arr = np.array([[1, 2], [3, 4], [5, 6]]) sums_along_axis_0 = np.sum(arr, axis=0, keepdims=True) # 保持维度 ``` ##### **subok:** - 一个布尔值,指示是否允许子类化。如果设置为True,返回的数组将是输入数组的子类(如果可能的话) ```python import numpy as np arr = np.array([1, 2, 3]) result = np.add(arr, 5, subok=True) # 返回一个子类数组(如果可能) ```