【发布时间】:2014-10-17 15:57:39
【问题描述】:
在使用 Numpy 时,我经常需要使用布尔索引来访问数组的一部分。为了使事情更容易阅读和输入,我经常将这些子数组存储到新变量中,例如:
n = 10000
X = np.random.rand((n, n))
W = np.random.random_integers(0, 1, n)
X0 = X[W==0]
X1 = X[W==1]
但是,当我处理越来越大的数据集时,这似乎非常浪费。在这种情况下,推荐的做法是什么?我应该每次都写(在上面的例子中)X[W==0] 和 X[W==1] 吗?
【问题讨论】:
-
因为
W只包含0或1,你可以这样做:nulls = (W==0)然后X0 = X[nulls]和X1 = X[np.logical_not(nulls)]。后者可能是X1 = X[~nulls]
标签: python arrays memory numpy indexing