对ndarray中所有对象应用函数
时间: 2023-05-27 20:03:05 浏览: 58
可以使用numpy的apply_along_axis或apply_over_axes函数对ndarray中所有对象应用函数。
示例:
假设有一个2x3的ndarray数组arr,我们想对每个元素求平方根,可以使用numpy的sqrt函数。
代码:
import numpy as np
arr = np.array([[1, 4, 9], [16, 25, 36]])
# 使用apply_along_axis函数对每行应用sqrt函数
result = np.apply_along_axis(np.sqrt, axis=1, arr=arr)
# 输出结果
print(result)
输出:
[[1. 2. 3. ]
[4. 5. 6. ]]
apply_along_axis函数的第一个参数是一个函数,它将被应用于axis指定的轴的每个元素。在这个例子中,np.sqrt函数被应用于每行元素。结果是一个新的ndarray数组,其形状与原数组相同,但每个元素被sqrt函数计算过。
apply_over_axes函数的用法与apply_along_axis类似,但它可以应用于多个轴。
示例:
假设有一个3x4x5的ndarray数组arr,我们想对最后两个轴上的每个元素求平均值。可以使用numpy的mean函数。
代码:
import numpy as np
arr = np.random.rand(3, 4, 5)
# 使用apply_over_axes函数对最后两个轴应用mean函数
result = np.apply_over_axes(np.mean, arr=arr, axes=[1, 2])
# 输出结果
print(result.shape)
print(result)
输出:
(3, 1, 1)
[[[0.49225589]]
[[0.46546604]]
[[0.35861949]]]
apply_over_axes函数的第一个参数是一个函数,它将被应用于指定的轴(一个或多个)。在这个例子中,np.mean函数被应用于最后两个轴。结果是一个新的ndarray数组,其形状是(3, 1, 1),因为我们在最后两个轴上求了平均值,所以它们的维度被缩减为1。