我有一个很大的二维数组arr
,我想用numpy把它合并到第二个轴上,因为np.histogram
会把数组展平,所以我现在用了一个for循环:
import numpy as np
arr = np.random.randn(100, 100)
nbins = 10
binned = np.empty((arr.shape[0], nbins))
for i in range(arr.shape[0]):
binned[i,:] = np.histogram(arr[i,:], bins=nbins)[0]
我觉得应该有一个更直接和更有效的方法来做到这一点在numpy,但我没有找到一个。
4条答案
按热度按时间mf98qq941#
您可以使用
np.apply_along_axis
:主要的优点(如果有的话)是它稍微短一些,但是我不期望有太多的性能提升,它可能在每行结果的组装方面稍微更有效一些。
gj3fmq9x2#
我对Ami的解决方案中的lambda有点困惑,所以我扩展了它来展示它的作用:
e7arh2l63#
要沿着任意轴对numpy数组进行装箱,可以用途:
考虑"axis= -1“的情况有点麻烦。
twh00eeo4#
你必须使用numpy.histogramdd专门为你的问题