【发布时间】:2015-09-23 07:11:11
【问题描述】:
假设有两个数组,vals 包含值,masks 包含指示是使用vals 还是nans 中的值的布尔值。目标是构建一个与masks 长度相同的数组ret,其中包含从vals 对应位置的值到True 中的True 条目。
例如,假设
vals = np.array([1, 2])
masks = [True, False, False, True]
那么ret,返回值,应该是
array([1, None, None, 2], dtype=object)
使用循环显然很容易做到这一点:
import numpy as np
def unsparse(vals, masks):
vals_i = 0
ret = []
for m in masks:
if m:
ret.append(vals[vals_i])
vals_i += 1
else:
ret.append(None)
return np.array(ret)
>> unsparse(np.array([1, 2]), [True, False, False, True])
array([1, None, None, 2], dtype=object)
有没有一种方法可以不用循环并且更简洁?
【问题讨论】:
-
你真的想要那个数组中的
None吗?你会做任何计算吗?
标签: python numpy vectorization sparse-matrix