numpy.array切片和索引操作

来源:互联网 发布:中国移动互联网数据 编辑:程序博客网 时间:2024/06/03 15:26

基本索引操作

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print arr[2]#第2行的数组print arr[0][2]#第0行第2列的值print arr[0, 2] # 普通Python数组不能用,同上
[7 8 9]33

切片操作

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print arr[:]#打印整个3*3数列print arr[:2]#打印0,1行print arr[:1, :2]#打印0行,0,1列
[[1 2 3] [4 5 6] [7 8 9]][[1 2 3] [4 5 6]][[1 2]]

布尔型索引

import numpy as npimport numpy.random as np_randomname_arr = np.array(['Bob', 'Joe', 'Will'])rnd_arr = np_random.randn(3, 3)         # 随机3*3数组print name_arr == 'Bob'                # 返回布尔数组,元素等于'Bob'为True,否则False。print rnd_arr[name_arr == 'Bob']        # 利用布尔数组选择行,第0行print rnd_arr[name_arr == 'Bob', :2]    # 增加限制打印列的范围,第0行 前2列print rnd_arr[~(name_arr == 'Bob')]    # 对布尔数组的内容取反,第1,2列print rnd_arr[(name_arr == 'Bob') | (name_arr == 'Will')] # 逻辑运算混合结果rnd_arr[name_arr != 'Joe'] = 7          # 先布尔数组选择行,然后把每行的元素设置为7。print rnd_arr
[[-0.09102884 -0.09452611  1.42854702] [ 2.15963354  0.24216261 -2.26044752] [-0.72741325 -1.085561    0.54600936]][ True False False][[-0.09102884 -0.09452611  1.42854702]][[-0.09102884 -0.09452611]][[ 2.15963354  0.24216261 -2.26044752] [-0.72741325 -1.085561    0.54600936]][[-0.09102884 -0.09452611  1.42854702] [-0.72741325 -1.085561    0.54600936]][[ 7.          7.          7.        ] [ 2.15963354  0.24216261 -2.26044752] [ 7.          7.          7.        ]]

花式索引(Fancy indexing)

arr = np_random.randn(3, 3)         # 随机3*3数组print arrprint arr[[1, -1]]# 打印arr[1],a[-1]行print arr[[0, 1], [0, 1]]#打印a[0, 0],a[1, 1]print arr[[0, 1]][:, [1, 2]]#打印0,1行的1,2列print arr[:2, [1,2]]#同上print arr[np.ix_([0, 1], [1, 2])]#同上,最清楚的写法
[[-0.60100046 -0.16245393  0.04618795] [-0.05029884 -1.43052367 -0.91403785] [-1.445763   -1.4240193  -0.79258699]][[-0.05029884 -1.43052367 -0.91403785] [-1.445763   -1.4240193  -0.79258699]][-0.60100046 -1.43052367][[-0.16245393  0.04618795] [-1.43052367 -0.91403785]][[-0.16245393  0.04618795] [-1.43052367 -0.91403785]]
原创粉丝点击