[英]how to apply a function on columns of a numpy array using a conditional array?
arr = np. array([[ 1. , 9.98672295, 1. ],
[ 2. , 19.97344589, 2. ],
[ 3. , 29.96016884, 3. ]])
cnd = [True, False, True]
func = lambda a : a.astype(int)
如何仅将func应用于与cnd数组对应的arr列为 True (第一个和第三个)?
理想的结果是:
outcome = np. array([[ 1 , 9.98672295, 1 ],
[ 2 , 19.97344589, 2 ],
[ 3 , 29.96016884, 3 ]])
其中第一列和第三列是整数
如果我理解正确,您可以使用
>>> arr[:, cnd].astype(int)
array([[1, 1],
[2, 2],
[3, 3]])
这是一种方法:
f2 = lambda a, i: func(a) if cnd[i] else a
f3 = lambda a: np.array([f2(row, i) for (i, row) in enumerate(a.T)]).T
我应用了多个函数以使其更具可读性,尽管可以说您可以使用单个 function 来完成。
我唯一担心的是 numpy 可能需要明确获取列类型,否则可能会将它们强制转换为同一类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.