我有许多要切片的列表,例如(使用示例数据):
midpoint = [[0.2], [0.5], [0.6]]
Values = [[0.1, 0.3, 0.6, 0.8], [0.2,0.3,0.5,0.7], [0.2,0.5,0.6,0.9]]
numbers = numpy.arange(0, len(Values), 1)
然后我有一个循环,从大于或小于midpoint
值的第一个值的numbers
查找索引位置。我有:
然后,我使用这些索引位置来返回其他列表中的值。在
我遇到的问题是,有时没有大于或小于中点的值,因此indexgtr
或indexlt
返回一个空列表[]
,我得到错误IndexError: index 0 is out of bounds for axis 0 with size 0
。在
有什么我可以添加的东西来捕捉这个并在空列表中替换一个0值吗?在
您可以沿着第二个轴矢量化并使用^{} 获得所需的结果:
注意:我将}替换为},以更好地显示矢量化结果。注意,对于
<=
和{<
和{<
的情况,第一行没有任何小于0.2
的列,但是返回了0
(因为这是一个充满False
的行的第一次出现)。在.argmax(axis=1)
找到第二个轴上最大值的位置。因为它是一个布尔数组,所以它返回第一个True
出现。在有多种方法可以表达测试:
它们都有点罗嗦,但我不认为它们贵。除了从}执行某些操作,而不是选择第一个或最后一个值。在
numbers
中选择子值之外,这里没有对向量进行任何操作。由于numbers
是排序的,所以您也可以使用min
或{使用以下内容测试表达式:
^{pr2}$我假设在继续下一个}执行一些操作。在
i
之前,您将在这个循环中对indexgtr
和{相关问题 更多 >
编程相关推荐