首页 > 解决方案 > 如何使用 numpy 函数制作此列表

问题描述

我正在尝试加快此列表的理解速度,我尝试使用numpy.vectorize,但无法使其工作。是否可以使用该功能,如果可以,如何或有另一种方法可以使其更快?列表“a”是一个 numpy ndarray(二维),所以我知道为了让它更快,你应该使用 numpy 函数而不是列表推导,但是找不到如何使用这些函数来做到这一点。

[[[255,255,255] if y else [0,0,0] for y in row ] for row in a]

标签: pythonpython-3.xperformancenumpylist-comprehension

解决方案


你可以使用np.where

In [11]: np.where(a, np.array([255, 255, 255]), 0)
Out[11]:
array([[255, 255, 255],
       [  0,   0,   0],
       [255, 255, 255]]

另一种方法是首先创建一个完整数组或零数组,然后更新行:

In [21] res = np.zeros((3, 3))

In [22]: np.where(a == 0, res, 255)
Out[22]:
array([[255., 255., 255.],
       [  0.,   0.,   0.],
       [255., 255., 255.]])

推荐阅读