我有一个将数组作为参数和一个 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)
广播有没有一种麻木的方法?
我有一个将数组作为参数和一个 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)
广播有没有一种麻木的方法?
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