【发布时间】:2020-07-04 19:20:04
【问题描述】:
我有一个 for 循环需要 1 个多小时才能执行,所以我有了使用 numpy.where() 函数的想法。 我想知道是否有任何方法可以在具有不同子列表大小的数组中使用 numpy where ,如下例所示:
a = [[1,2,3],[4,5]]
a = np.array(a)
print(np.where(a < 3, -1, 100))
输出:
File "test.py", line 104, in <module>
print(np.where(a < 3, -1, 100))
TypeError: '<' not supported between instances of 'list' and 'int'
非常感谢!
【问题讨论】:
-
重点是您定义的数组
a不统一,因此被视为列表。您可能希望使其统一以使其工作,否则您将无法获得 numpy 的好处。 -
感谢您的回答!你说的制服到底是什么意思?你的意思是这样的[[1,2,3],[4,5,6]]?如果是,我不能使用不同的列表大小?
-
事实上我有一个带有子数组的数组,每个子数组都有一个图像的像素并且这些图像没有相同的形状,所以数组的大小可能会有所不同你知道怎么做吗?在这种情况下我使用 where ?
-
您好,Wassim,我为您回答了这个具体案例。但是,如果您提供有关代码的更多详细信息,我相信您会得到很多关于如何加快代码速度的有趣想法。
-
作为 python 参数的条件在传递给
where之前会被完整评估。where是一个函数,不是特殊的语法操作。
标签: python numpy numpy-ndarray