【发布时间】:2017-10-11 18:55:14
【问题描述】:
我有一个 3D numpy 数组 input_data (q x m x n),我用它来构建直方图数据以最终绘制,它存储在 plot_data (m x n x 2) 中。这一步是我流程中的一个不错的瓶颈,我想知道是否有更快、更“numpy”的方式来做到这一点。
num_bins = 3
for i in range(m):
for j in range(n):
data = input_data[:, i, j]
hist, bins = np.histogram(data, bins=num_bins)
# Create the (x, y) pairs to plot
plot_data[i][j] = np.stack((bins[:-1], hist), axis=1)
【问题讨论】:
-
更快是指更简洁吗?
-
更快意味着运行时,因此理想地利用 numpy 的矢量化能力,类似于使用 np.sum() 来计算总和,而不是循环并手动计算它
-
所以,我查了一些资料。也许,scipy 网站将是您正在寻找的东西?我发现了以下内容:docs.scipy.org/doc/numpy-1.13.0/reference/arrays.nditer.html
-
您的数据是 (q,m,n)。进一步研究的 q,m,n 值是多少?
-
q, m, n 可以是任何东西,但为了近似我的数据,可能是 100000 x 10 x 360。@Maderas 我不认为它对多维数组有效。跨度>
标签: python performance numpy vectorization