import numpy as np

#
# array支持 slice索引
# slice(起始start,停止stop,间隔step)
# 起始start:停止stop:间隔step
# 切片还可以包括省略号 ...，来使选择元组的长度与数组的维度相同。
# #

a = np.arange(10)
s = slice(2,7,2)   # 从索引 2 开始到索引 7 停止，间隔为2
#测试切片 函数
print(a[2:7:2])
print (a[s])

a = np.array([[1,2,3],[4,5,6],[7,8,9]])  
print (a[...,0])   # 第2列元素
print (a[0,...])   # 第2行元素
print (a[...,1:])  # 第2列及剩下的所有元素
print()

# 整数数组索引
# 依次取[0,0],[1,1],[2,0]
# #
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print (y)
#
# 依次取对应的序列 第4行，2行,0行，7行
# #
x=np.arange(32).reshape((8,4))
print (x[[4,2,0,7]])

x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])

# 布尔索引
# 我们可以通过一个布尔数组来索引目标数组。
# 布尔索引通过布尔运算（如：比较运算符）来获取符合指定条件的元素的数组。
# 以下实例获取大于 5 的元素：
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print ('我们的数组是：')
print (x)
print ('\n')
# 现在我们会打印出大于 5 的元素  
print  ('大于 5 的元素是：')
y=x[x >  5]
print(y)
