For*_*zaa 2 python conditional-statements indices
我有以下问题。有两个 n 维整数数组,我需要确定满足多个条件的项目的索引。
所以假设我们有:
array1 = np.array([1,-1,-2])
array2 = np.array([0,1,1])
Run Code Online (Sandbox Code Playgroud)
然后它应该返回索引 2(第三个数字)。我正在尝试按如下方式编程:
import numpy as np
n = 3
array1 = np.array([1,-1,-2])
array2 = np.array([0,1,1])
indices = [i for i in range(n) if array1[i]<0]
indices2 = [i for i in indices if array2[i] == min(array2[indices])]
index = [i for i in indices2 if array1[i] == min(array1[indices2])][0] #[0] breaks the tie.
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但是,我觉得它不是很优雅。在我看来,您应该能够在一两行中完成此操作,并且定义较少的新变量。有人有改进的建议吗?提前致谢。
您可以使用以下命令从 array1 中获取所有负元素的索引:
np.where(array1 < 0)
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式访问子集:
subset = array2[array1 < 0]
Run Code Online (Sandbox Code Playgroud)
要获取 array1 的最小(负)值的索引,可以使用 array1.argmin()
value = array2[array1.argmin()]
Run Code Online (Sandbox Code Playgroud)
把所有的东西放在一起给你:
value = array2[array1 < 0][array1[array1 < 0].argmin()]
Run Code Online (Sandbox Code Playgroud)
但如果 array1 只有正值,则必须捕获 ValueErrors。
| 归档时间: |
|
| 查看次数: |
9752 次 |
| 最近记录: |