【发布时间】:2014-11-19 06:05:40
【问题描述】:
我遇到过这样的语句,其中赋值(在本例中为 numpy 数据数组的第一列)后跟布尔运算符。比如这个。
indices = data[:,1] == 1
如何在伪代码中解释这里发生的事情,以及从该语句生成什么类型的输出?
在这种情况下,后面跟着这个语句:
jan_data = data[indices]
【问题讨论】:
我遇到过这样的语句,其中赋值(在本例中为 numpy 数据数组的第一列)后跟布尔运算符。比如这个。
indices = data[:,1] == 1
如何在伪代码中解释这里发生的事情,以及从该语句生成什么类型的输出?
在这种情况下,后面跟着这个语句:
jan_data = data[indices]
【问题讨论】:
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。
data 这是一个numpy数组(不是列表)。
data = np.array([[1,3,4,5],[4,6,8,9]])你会得到布尔数组作为输出。