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)
图片来自(NumPy 广播(Broadcast) | 菜鸟教程 (runoob.com))
总结广播机制
对两个数组,分别比较他们的每一个维度,满足:
- 数组拥有相同形状。
- 当前维度的值相等。
- 当前维度的值有一个是 1。
若条件不满足,抛出"ValueError: frames are not aligned"异常