繁体   English   中英

如何使用条件数组在 numpy 数组的列上应用 function?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM