Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一定条件下从数组列表中获取元素_Python_Sorting_Arraylist - Fatal编程技术网

Python 在一定条件下从数组列表中获取元素

Python 在一定条件下从数组列表中获取元素,python,sorting,arraylist,Python,Sorting,Arraylist,我试图只打印包含元素的行,其中列(j)和列(j+1)之间的差值等于[0,1])。这意味着,在给定的示例中,我只保留第一列(此数据集只是较大数据集的一个小样本): 提前谢谢 您会得到一个ValueError,因为这里使用=返回一个bools数组,表示每个元素的相等性,而不是bool本身。例如: np.array([1, 2]) == [1, 2] 返回np.array([True,True]),而不是True。要将结果作为单个布尔值获取,请使用all(),如果调用它的bool数组中的所有元素都

我试图只打印包含元素的行,其中列(j)和列(j+1)之间的差值等于[0,1])。这意味着,在给定的示例中,我只保留第一列(此数据集只是较大数据集的一个小样本):


提前谢谢

您会得到一个
ValueError
,因为这里使用
=
返回一个
bool
s数组,表示每个元素的相等性,而不是
bool
本身。例如:

np.array([1, 2]) == [1, 2]
返回
np.array([True,True])
,而不是
True
。要将结果作为单个布尔值获取,请使用
all()
,如果调用它的
bool
数组中的所有元素都是
True
,则该函数将返回
True
。如果条件变为:

((np.array(e[i][j+1]) - np.array(e[i][j])) == [0,1]).all()
在固定条件下,代码最终输出:

([0, 0], [0, 1], [0, 2])
([0, 0], [0, 1], [0, 2])
([0, 0], [0, 1], [0, 3])
([0, 0], [1, 0], [1, 1])
([0, 0], [1, 0], [1, 1])
([0, 0], [1, 0], [1, 1])

这似乎是对的。

那么让我从这个问题开始

当您将
numpy.array
与多个元素进行比较时,可以得到以下结果:
[True,False]

如果
-语句不知道如何理解它,因此您需要完全按照异常告诉您的操作,您需要在条件的末尾添加
.all()
,如下所示:
((np.array(e[i][j+1])-np.array(e[i][j])==[0,1]).all()

在下面的代码中,我假设您要查找的行仅包含差异
[0,1]
的列,而不是列。(如果我错了,我很抱歉,我刚醒。)

让我们继续

但仍有一个问题。使用您的解决方案,您将获得以下结果:

([0,0],[0,1],[0,2])

([0,0],[0,1],[0,2])

([0,0],[0,1],[0,3])

([0,0],[1,0],[1,1])

([0,0],[1,0],[1,1])

([0,0],[1,0],[1,1])

但你想要的结果是:

([0,0],[0,1],[0,2])

因此,这里是我基于此的解决方案


我希望这会有帮助。

既然e[0][3]不存在,你会从中减去[0,2](e[0][2]什么?你想把它打印出来吗?另外,我认为您在创建numpy数组的方式上犯了一个小错误,“我试图只打印列(j)和列(j+1)之间的差值等于[0,1])的元素行。”因此,在减法的结果中,所有值都需要与参考值匹配?错误消息建议您在比较结果上使用
.any
.all
——我想知道,如果您希望所有值都匹配,那么哪一个是合适的?
([0, 0], [0, 1], [0, 2])
([0, 0], [0, 1], [0, 2])
([0, 0], [0, 1], [0, 3])
([0, 0], [1, 0], [1, 1])
([0, 0], [1, 0], [1, 1])
([0, 0], [1, 0], [1, 1])
import numpy as np

class ContinueEx(Exception):
    pass

continue_ex = ContinueEx()

_list = e= [([0, 0], [0, 1], [0, 2]),
 ([0, 0], [0, 1], [0, 3]),
 ([0, 0], [0, 2], [1, 0]),
 ([0, 0], [0, 2], [1, 1]),
 ([0, 0], [0, 2], [1, 1]),
 ([0, 0], [0, 2], [1, 1]),
 ([0, 0], [0, 2], [1, 2]),
 ([0, 0], [0, 2], [1, 2]),
 ([0, 0], [0, 2], [2, 0]),
 ([0, 0], [1, 0], [1, 1]),
 ([0, 0], [1, 0], [1, 1]),
 ([0, 0], [1, 0], [1, 1]),
 ([0, 0], [1, 2], [2, 0])]

for _inner_list in range(0,len(_list)):
    try:
        for _list_element in range(1, len(_list[_inner_list])):
            if not ((np.array(_list[_inner_list][_list_element]) - np.array(_list[_inner_list][_list_element-1])  == np.array([0,1]))).all():
                raise continue_ex
        print(_list[_inner_list])
    except ContinueEx:
        continue