在numpy中沿轴评估函数

计算科学 麻木的
2021-12-26 12:53:10

我有一个将数组作为参数和一个 3D 数组的numpy函数fx[a,b,c]

我想f沿特定列评估函数。一个冗长的方式可能是理解:

y = [ [ f(x[a][b])  for a in range(len(x)) ] for b in range(len(x[0]))]
y = np.array(y)

广播有没有一种麻木的方法?

2个回答

np.apply_along_axis(f, 2, x).T

这是一个更简单的理解:

numpy.array([[f(row) for row in layer] for layer in x]).T

或更简洁地说,

numpy.array([map(f,layer) for layer in x]).T

请注意,我从您的示例代码中复制了转置。您可以通过神秘的重塑来避免嵌套理解:

numpy.reshape(map(f,x.reshape(numpy.prod(x.shape[:2]), x.shape[2])),x.shape[:2]).T