Python中的 numpy.apply_over_axes()
numpy.apply_over_axes()在数组中的多个轴上重复应用一个函数。
句法 :
numpy.apply_over_axes(func, array, axes)
参数 :
1d_func : the required function to perform over 1D array. It can only be applied in
1D slices of input array and that too along a particular axis.
axis : required axis along which we want input array to be sliced
array : Input array to work on
*args : Additional arguments to 1D_function
**kwargs : Additional arguments to 1D_function
返回 :
The output array. Shape of the output array can be different depending on whether func
changes the shape of its output with respect to its input.
代码 1:
Python
# Python Program illustrating
# apply_over_axis() in NumPy
import numpy as geek
# Using a 3D array
geek_array = geek.arange(16).reshape(2, 2, 4)
print("geek array :\n", geek_array)
# Applying pre-defined sum function over the axis of 3D array
print("\nfunc sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, 1, 0]))
# Applying pre-defined min function over the axis of 3D array
print("\nfunc min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, 1, 0]))
Python
# Python Program illustrating
# apply_over_axis() in NumPy
import numpy as geek
# Using a 2D array
geek_array = geek.arange(16).reshape(4, 4)
print("geek array :\n", geek_array)
"""
->[[ 0 1 2 3] min : 0 max : 3 sum = 0 + 1 + 2 + 3
-> [ 4 5 6 7] min : 4 max : 7 sum = 4 + 5 + 6 + 7
-> [ 8 9 10 11] min : 8 max : 11 sum = 8 + 9 + 10 + 11
-> [12 13 14 15]] min : 12 max : 15 sum = 12 + 13 + 14 + 15
"""
# Applying pre-defined min function over the axis of 2D array
print("\nApplying func max : \n ", geek.apply_over_axes(geek.max, geek_array, [1, -1]))
# Applying pre-defined min function over the axis of 2D array
print("\nApplying func min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, -1]))
# Applying pre-defined sum function over the axis of 2D array
print("\nApplying func sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, -1]))
Python
# Python Program illustrating
# equivalent to apply_over_axis()
import numpy as geek
# Using a 3D array
geek_array = geek.arange(16).reshape(2, 2, 4)
print("geek array :\n", geek_array)
# returning sum of all elements as per the axis
print("func : \n", geek.sum(geek_array, axis=(1, 0, 2), keepdims = True))
输出 :
geek array :
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
func sum :
[[[24 28 32 36]]]
func min :
[[[0 1 2 3]]]
代码 2:
Python
# Python Program illustrating
# apply_over_axis() in NumPy
import numpy as geek
# Using a 2D array
geek_array = geek.arange(16).reshape(4, 4)
print("geek array :\n", geek_array)
"""
->[[ 0 1 2 3] min : 0 max : 3 sum = 0 + 1 + 2 + 3
-> [ 4 5 6 7] min : 4 max : 7 sum = 4 + 5 + 6 + 7
-> [ 8 9 10 11] min : 8 max : 11 sum = 8 + 9 + 10 + 11
-> [12 13 14 15]] min : 12 max : 15 sum = 12 + 13 + 14 + 15
"""
# Applying pre-defined min function over the axis of 2D array
print("\nApplying func max : \n ", geek.apply_over_axes(geek.max, geek_array, [1, -1]))
# Applying pre-defined min function over the axis of 2D array
print("\nApplying func min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, -1]))
# Applying pre-defined sum function over the axis of 2D array
print("\nApplying func sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, -1]))
输出 :
geek array :
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
Applying func max :
[[ 3]
[ 7]
[11]
[15]]
Applying func min :
[[ 0]
[ 4]
[ 8]
[12]]
Applying func sum :
[[ 6]
[22]
[38]
[54]]
代码 3:等效于代码 2,不使用 numpy.apply_over_axis()
Python
# Python Program illustrating
# equivalent to apply_over_axis()
import numpy as geek
# Using a 3D array
geek_array = geek.arange(16).reshape(2, 2, 4)
print("geek array :\n", geek_array)
# returning sum of all elements as per the axis
print("func : \n", geek.sum(geek_array, axis=(1, 0, 2), keepdims = True))
输出 :
geek array :
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
func :
[[[120]]]
参考 :
https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.apply_over_axes.html
笔记 :
这些代码不会在在线 IDE 上运行。请在您的系统上运行它们以探索工作。