【问题标题】:assignment followed by boolean operator赋值后跟布尔运算符
【发布时间】:2014-11-19 06:05:40
【问题描述】:

我遇到过这样的语句,其中赋值(在本例中为 numpy 数据数组的第一列)后跟布尔运算符。比如这个。

indices = data[:,1] == 1

如何在伪代码中解释这里发生的事情,以及从该语句生成什么类型​​的输出?

在这种情况下,后面跟着这个语句:

jan_data = data[indices]

【问题讨论】:

    标签: python numpy boolean


    【解决方案1】:

    data[:,1] == 1 是一个将计算为一个值的表达式。该值将分配给indices。使用括号,您可以将其视为indices = (data[:,1] == 1)。它不是“后跟布尔运算符的赋值”。它是一个赋值,其右侧是一个包含布尔运算符的表达式。您可以分配a == b 的结果,就像您可以分配a + b 的结果一样。

    类型可以定义此类比较返回的值类型。在这种情况下,我怀疑data 是一个 numpy 数组,比较 numpy 数组会为您提供另一个布尔值的 numpy 数组,条件为真时为真,条件为假时为假。因此,如果data[:,1] 类似于[1, 2, 3, 2, 1],则data[:,1] == 1 的结果将是[True, False, False, False, True],这就是分配给indices 的值。

    【讨论】:

    • 我不想说什么,但是如果我将data 定义为整数列表(data = [1, 2, 3, 4, 5])并尝试data[:,1] == 1,我会得到TypeError: list indices must be integers, not tuple。 Python 2.7.3。
    • @oopcode:是的,这就是为什么我说我怀疑data 这是一个numpy数组(不是列表)。
    • @oopcode 当你使用data = np.array([[1,3,4,5],[4,6,8,9]])你会得到布尔数组作为输出。
    猜你喜欢
    • 2012-09-20
    • 2016-09-28
    • 2013-07-07
    • 2023-03-08
    • 2013-02-27
    • 2013-02-08
    • 2016-04-30
    • 2013-03-02
    • 2011-08-02
    相关资源
    最近更新 更多