我在执行n维数组上的给定操作时遇到了问题。在具体的我有一个数组,其尺寸为5:在阵列的一个特定维度执行操作
In [223]: data.ndim
Out[223]: 5
,并等于形状:
In [224]: shape(data)
Out[224]: (6, 26, 27, 6, 50)
我想知道的是,如果有可能在执行操作所有其他维度的最后维度(例如max(data[0,0,0,0,:])
),但不使用任何for循环。
我希望我已经够清楚了!感谢您的帮助
我在执行n维数组上的给定操作时遇到了问题。在具体的我有一个数组,其尺寸为5:在阵列的一个特定维度执行操作
In [223]: data.ndim
Out[223]: 5
,并等于形状:
In [224]: shape(data)
Out[224]: (6, 26, 27, 6, 50)
我想知道的是,如果有可能在执行操作所有其他维度的最后维度(例如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)
一个通常是非常有用的保留尺寸虽然,因为out2[i,j,k,l,0] = max(data[i,j,k,l,:])
。你可以通过这样做:
out2 = np.max(data, axis=-1, keepdims=True)
所以out2.shape == (6, 26, 27, 6, 1)
- 这是很方便的,因为现在它正确地播放反对输入。
欲了解更多信息,看看参数为ufunc.reduce
,这sum
和max
周围
在numpy的大部分功能需要一个axis
关键字参数用于此目的:
data.max(axis=4)
这将找到在第5轴(他们从0开始)的最大值。结果将是形状(6, 26, 27, 6)
。
由于既薄包装!我知道轴功能,但我没有得到的是我该如何执行任何其他操作。例如,现在我想通过除以我刚刚找到的最大值来规范化我的数据(仍然在谈论第五维),是否有可能没有任何for循环? – gian9
这将是'data/np.max(data,axis = -1,keepdims = True)' – Eric