我在n维数组上执行给定操作时遇到问题.在具体我有一个维度为5的数组:
In [223]: data.ndim
Out[223]: 5
Run Code Online (Sandbox Code Playgroud)
并且形状等于:
In [224]: shape(data)
Out[224]: (6, 26, 27, 6, 50)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否可以对所有其他维度(例如max(data[0,0,0,0,:]))执行对最后维度的操作,但不使用任何for循环.
我希望我足够清楚!谢谢您的帮助
out[i,j,k,l] = max(data[i,j,k,l,:]) 可以拼写为以下之一
out = np.max(data, axis=-1)
out = np.max(data, axis=4)
Run Code Online (Sandbox Code Playgroud)
通常,保持尺寸是有用的,如out2[i,j,k,l,0] = max(data[i,j,k,l,:]).您可以通过传递:
out2 = np.max(data, axis=-1, keepdims=True)
Run Code Online (Sandbox Code Playgroud)
所以out2.shape == (6, 26, 27, 6, 1)- 这很方便,因为它现在可以正确地对输入进行广播.
欲了解更多信息,看一看的论据ufunc.reduce,这sum和max周围既薄包装