我们说我有一个numpy数组
import numpy as np
a = np.array([[1,2,3],[3,4,5]])
我定义了一个处理数据的函数,例如,得到一个向量的乘积:
def vp(v):
p = 1
for i in v:
p = p * i
return p
如何通过像列表的map函数那样容易地将函数广播到a中的所有向量,例如: vp(a)
会给我[6, 60]
?
如果a是3D甚至是4D阵列,有什么好方法可以播放这样的自定义函数呢?
答案 0 :(得分:1)
我认为您的问题的核心依赖于创建自定义函数以应用于多维数据集。为此你可以使用numpy.apply_along_axis()。
a = array([[1, 2, 3],
[3, 4, 5]])
np.apply_along_axis(arr = a, func1d=vp, axis=1)
> array([ 6, 60])
是的,这也适用于N维数据集。
c = array([[[ 1, 2],
[ 3, 3],
[ 4, 5]],
[[16, 17],
[18, 18],
[19, 20]]])
np.apply_along_axis(vp, axis=1, arr=c)
> array([[ 12, 30],
[5472, 6120]])