【发布时间】:2018-05-09 14:31:41
【问题描述】:
以下是从A 计算数组B 的示例代码:
import numpy as np
idx1 = np.array([
[3, 0, 0],
[2, 1, 0],
[2, 0, 1],
[1, 2, 0],
[1, 1, 1],
[1, 0, 2],
[0, 3, 0],
[0, 2, 1],
[0, 1, 2],
[0, 0, 3]])
idx2 = np.arange(3)
A = np.arange(10*4*3).reshape(10, 4, 3)
B = np.prod(A[:, idx1, idx2], axis=2)
注意这一行
B = np.prod(A[:, idx1, idx2], axis=2)
这行内存有效吗?还是numpy 会为A[:, idx1, idx2] 生成一些内部数组?
可以想象,如果len(A) 非常大,而numpy 为A[:, idx1, idx2] 生成一些内部数组,则内存效率不高。有没有更好的方法来做这样的事情?
【问题讨论】:
-
你真的是内存不足了吗?如果有,你有多少内存,你的实际数据是什么形状?
-
@JohnZwinck 事实上,我并没有耗尽内存。我只是好奇是否有更好的方法来做到这一点。