不同长度的numpy数组的元素比较

时间:2015-01-23 12:45:55

标签: python arrays numpy logical-operators elementwise-operations

我想比较大小相等的numpy数组。具体来说,我有

>>> import numpy as np
>>> A = np.array([0.5, 2., 0.1, 12.])
>>> B = np.ones(len(A))
>>> A<B
array([ True, False,  True, False], dtype=bool)
>>> C = np.array([0.5, 2., 0.1, 12., 0.8])
>>> D = np.ones(len(C))
>>> C<D
array([ True, False,  True, False, False], dtype=bool)

最后一个元素是False,尽管0.8小于1.0。这似乎发生在不均匀的阵列长度上。 我在这里错过了什么吗?

我使用Python 2.7.6和NumPy 1.8.0。

但是,它适用于NumPy 1.8.2。

1 个答案:

答案 0 :(得分:1)

我认为你在测试中混淆了一些东西。在交互式会话中工作时,这始终是一种危险。为了复制东西,你应该总是使用一个独立的最小工作示例。我想你不能提供给我们。

总结一下,对于“不均匀”长度的失败是有点苛刻的,只需要一个简单的测试:-)。此外,正如DSM所指出的,在您的第一个片段中,输出不适合输入(长度方式)。你不应该复制/粘贴不相关的输入和输出,只是为了使它看起来像是相关的,即使你认为它是相关的。让电脑告诉你。

对我来说,事情按预期工作:

>>> A = np.array([0.5, 2., 0.1, 12., 0.8])
>>> B = np.ones(len(A))
>>> A<B
array([ True, False,  True, False,  True], dtype=bool)