刚开始用Datacamp学习python,我遇到了关于Numpy的问题。在做this problem时(这是一个独立的问题所以应该很容易理解,没有任何上下文),我对指令感到困惑:“你可以在这里使用一个小技巧:使用np_positions =='GK'作为索引np_heights”。
代码中没有任何地方将np_heights和np_positions链接在一起,该索引如何工作?起初我以为我必须垂直连接这两个,但事实证明它没有必要。
是不是因为只有两个Numpy数组而且它们具有相同数量的元素,Python决定自动配对它们?如果我有多个Numpy数组具有相同数量的元素并使用该索引,那会是一个问题吗?
答案 0 :(得分:1)
他们唯一的共同点是他们的长度。除此之外,它们没有联系在一起。使用boolean indexing时,长度会发挥作用。
考虑以下数组:
arr = np.array([1, 2, 3])
使用布尔值,我们可以索引到这个数组:
arr[[True, False, True]]
Out: array([1, 3])
这在0和2位返回值(它们有True
个值)。
这个布尔数组可能来自任何地方。它可能来自相同的数组,也可能来自相同长度的不同数组。
arr1 = np.array(['a', 'b', 'a', 'c'])
如果我arr1 == 'a'
,它将进行元素比较并返回
arr1 == 'a'
Out: array([ True, False, True, False], dtype=bool)
我可以在同一个数组中使用它:
arr1[arr1=='a']
Out:
array(['a', 'a'],
dtype='<U1')
或者在不同的数组中:
arr2 = np.array([2, 5, 1, 7])
arr2[arr1=='a']
Out: array([2, 1])
请注意,这与arr2[[True, False, True, False]]
没有什么不同。所以我们实际上并没有在这里使用arr1
。在您的示例中,np_positions == 'GK'
也将返回一个布尔数组。由于它与np_height
数组具有相同的大小,因此您只需处理布尔数组具有True值的位置。