Python数据分析复习(4)

111 阅读1分钟

Python数据分析复习——高级索引和广播

高级索引

整数数组索引

通过建立整数数组表示需要查询的索引,下列代码表示,查询索引为(0,0),(1,1),(2,2)

import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]] 
print (y)

布尔索引

获取索引值大于5的索引所对应的数

import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) 
print ('我们的数组是:') 
print (x) print ('\n') # 现在我们会打印出大于 5 的元素
print ('大于 5 的元素是:')
print (x[x > 5])

广播

举例

当数组的形状相同,则数组相加时,对应的索引的值直接相加;若数组的形状不相同,则触发广播机制

import numpy as np
a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]]) 
b = np.array([0,1,2]) 
print(a + b)

image.png 图片来自(NumPy 广播(Broadcast) | 菜鸟教程 (runoob.com))

总结广播机制

对两个数组,分别比较他们的每一个维度,满足:

  • 数组拥有相同形状。
  • 当前维度的值相等。
  • 当前维度的值有一个是 1。

若条件不满足,抛出"ValueError: frames are not aligned"异常