python - 如何使用 numpy 函数制作此列表
问题描述
我正在尝试加快此列表的理解速度,我尝试使用numpy.vectorize
,但无法使其工作。是否可以使用该功能,如果可以,如何或有另一种方法可以使其更快?列表“a”是一个 numpy ndarray(二维),所以我知道为了让它更快,你应该使用 numpy 函数而不是列表推导,但是找不到如何使用这些函数来做到这一点。
[[[255,255,255] if y else [0,0,0] for y in row ] for row in a]
解决方案
你可以使用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.]])
推荐阅读
- powershell - 在 Powershell 中将凭据传递给 Start-Service 时遇到问题,而不会出现无效参数错误
- http - 无法理解 developer.mozilla.org 中的示例
- c# - Unity,Application.OpenUrl如何在路径中打开带有西里尔符号的本地pdf文件?
- python - 使用临时变量与从字典中重复读取相同的键/值
- css - 是否有 CSS 纵横比骇客的高度派生版本?
- python - 使用 COSADD、COSMUL 和欧几里得距离测试 word2vec 模型的准确性
- entity-framework - 实体框架和子表复合键
- json - 来自网页的 urllib2 输出的 UniqueDecodeError,没有非 Unicode 字符
- javascript - TypeScript - 以更好的方式“新建”一个类?
- c# - Selenium C# - 如何检查所有链接