我使用列表推导从以下数组中创建了一个真值和假值列表:
array([[ True, True, False, ..., False, True, False],
[ True, True, False, ..., False, True, True],
[ True, False, True, ..., False, True, False],
...,
[ True, True, False, ..., True, True, False],
[ True, True, False, ..., True, True, False],
[ True, True, False, ..., True, True, False]], dtype=bool)
(它有50 X 85尺寸)
这是我的清单理解:
list_1 = [features[index] & features[i] for i in features]
其中index
是一个整数,(在我的情况下,它是14
)。
这就是print(features[index])
的样子:
[ True True False False False False False False True False False True
True False False False False True True False False False True False
True True True True False False True True True True True False
False False False False False False False False True True False False
False True True False True False True False True False True True
False True True True False False True True False False True False
False True True False False True True False]
以及print(features[i])
的示例如下:
[False False False False True False True False True False False False
False False False False False False False True False False False False
False True False True False False True False False False False True
False False False False True True True False False True True True
False False False True True False False False False False False False
True True True False False True False True False True False False
True True True False False True False False]
因此,两个阵列似乎长度相同。但是,当我将索引数组与功能数组中的所有其他数组进行比较时,我收到以下错误:
IndexError: index 54 is out of bounds for axis 0 with size 50
问题:在将features[index]
数组与 ALL 其他数组进行比较时,如何创建真值和假值列表? #34;阵列?
最终,列表应由真值组成,其中features[index]
中的元素与其他数组的 ALL 中的其他元素匹配。因此,列表中不太可能存在许多真值。该列表应由假值组成,其中features[index]
中的元素与要素数组的数组的 ANY 中的元素不匹配。
答案 0 :(得分:0)
假设我的理解是正确的,你只需要:
numpy.logical_and.reduce(features[index] == features)
这里我们首先使用:
生成所有行和feature[index]
之间的匹配
features[index] == features
然后,如果所有j
<{1}} features[index][j] == features[j]
,我们会为列i
减少有效测试的矩阵
举个例子:
>>> features = numpy.asarray(numpy.random.randint(2, size=(5, 10)), dtype=bool)
>>> features
array([[False, True, True, True, False, False, True, False, False,
False],
[ True, False, True, True, True, True, True, True, False,
True],
[ True, False, True, False, False, True, True, True, True,
True],
[False, False, True, False, True, False, False, True, False,
True],
[False, True, True, True, False, True, False, True, True,
True]], dtype=bool)
>>> numpy.logical_and.reduce(features[3] == features)
array([False, False, True, False, False, False, False, False, False, False])
答案 1 :(得分:0)
使用您的数组摘录,我只会在索引中遇到同样的错误:
In [726]: features
Out[726]:
array([[ True, True, False, True, False, True, False],
[ True, True, False, True, False, True, True],
[ True, False, True, True, False, True, False],
[ True, True, False, True, True, True, False],
[ True, True, False, True, True, True, False],
[ True, True, False, True, True, True, False]], dtype=bool)
In [727]: [features[i] for i in features]
/usr/local/bin/ipython3:1: VisibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 6 but corresponding boolean dimension is 7
...
IndexError: index 6 is out of bounds for axis 0 with size 6
[... for i in features]
遍历features
行。因此,features[i]
正尝试使用第i行功能对features
行进行索引。
正确的迭代是:
In [730]: [features[0] & features[i] for i in range(features.shape[0])]
Out[730]:
[array([ True, True, False, True, False, True, False], dtype=bool),
array([ True, True, False, True, False, True, False], dtype=bool),
array([ True, False, False, True, False, True, False], dtype=bool),
array([ True, True, False, True, False, True, False], dtype=bool),
array([ True, True, False, True, False, True, False], dtype=bool),
array([ True, True, False, True, False, True, False], dtype=bool)]
甚至是[features[0] & i for i in features]
。
但是你不需要在列表理解中这样做。 features[i]
具有形状(7,),可以针对整个功能(6,7)
features[0] & features
这解决了错误,但没有解决您希望如何与features[index]
进行比较的问题。我还没有完全消化它。显示features[i]
应与features[j]
进行比较的方式。