数据本身是一个对象,它同样也可以像python中的列表、元素等引用类型那种操作数据
- 索引(其实类似c语言中的数组操作,只是多了个多个元素索引)
import numpy as np a = np.arange(1, 10) b = np.arange(1, 10).reshape(3, 3) # 在一维数组中,指定元素索引(查找到第二元素) print(a[1]) # 在一维数组中,指定元素索引(查找到最后一个元素) print(a[-1]) # 在一维数组中,指定元素索引(查找到第一个,第三个和最后一个元素) print(a[[0,2,-1]]) # 在二维数组中,指定元素索引(查找到第二列) print(b[1]) # 在二维数组中,指定元素索引(查找到第二列第二个元素) print(b[1][1])
- 迭代(数组在python同样也是一个可迭代对象,因此可以用循环)
import numpy as np a = np.arange(1, 10) b = np.arange(1, 10).reshape(3, 3) # 一维数组使用for循环 for i in a: print(i) # 二维数组使用for循环 for i in b: print(i) #这里打印的是行 # 二维数组使用for循环 for i in b.flat: print(i) #这里打印的是每个元素,使用flat # 使用numpy自带的遍历方法 # funcld 判断方法,可以自己定义,也可以用numpy自带的 # axis 选择如何操作,0 为按行操作,1为按列操作 不过要注意数组的维数 # arr 数组 # np.apply_along_axis(func1d, axis, arr, *args, **kwargs) def fun(x): return x/2 print(np.apply_along_axis(fun,axis=0,arr=b)) print(np.apply_along_axis(fun,axis=1,arr=b))
- 切片(一维数据类似于列表,二维数组则要注意一下)
import numpy as np a = np.arange(1, 10) b = np.arange(1, 10).reshape(3, 3) # 一维数组,输出第二个,第三个。 print(a[1:3]) # 一维数组,输出第二个,第四个。 print(a[1:4:2]) # 二维数组,输出第二行(以二维数组方式输出) print(b[1:2:]) # 二维数组,输出第二行(以一维数组方式输出) print(b[1,]) # 二维数组,输出第二行,第一个元素 print(b[1,0]) # 二维数组,输出 # [0][0],[0][1] 1,2 # [1][0],[1][1] 3,4 print(b[0:2,0:2]) # 二维数组,输出 # [0][0],[0][1] 1,2 # [2][0],[2][1] 7,8 print(b[[0,2],0:2])