1、数组存储与加载
在numpy中函数loadtxt、函数savetxt可以存储在python文件中生成的list等数据类型,对于函数中要使用的数据库特征提取特别友好。
2、数组常见属性
ndim:返回的是该数组的维度,一维/二维/三维/多维
shape:返回的都是数组各维度的具体size,在二维图像的操作中比较常见。
dtype:用来设定numpy中的数据类型,常常用于数组初始化过程,如:
feature = np.zeros((3,128),dtype=np.float32)
除此之外dtype 也可用于查看数据类型
astype:用于转换数据类型
flags:可以用来看数组按行或按列排列
array = np.array([[2,3],[4,5]])
array.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
3、 numpy的常见函数
3.1 np.ascontiguousarray()
主要知识点在于加速numpy array的与运算速度,ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。可以见从Numpy中的ascontiguousarray说起
np.array 与 np.asarray 都可以将结构数据转化为ndarray,主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。
3.2 np中shuffle与permutation的区别
函数np.shuffle与np.permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序),区别在于:shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。
有点类似于上一个array与asarray的区别。
3.3 array的遍历与查找
import numpy as np
arr = np.asarray([[1,2,3],[4,5,6]])
for row in arr:
print('---- row ----',row)
for element in arr.flat:
print('---- element ----', element)
>>> np.where(arrat>3)
(array([1, 1], dtype=int64), array([0, 1], dtype=int64))
直接遍历是按行进行输出的,赋予数组flats属性之后则是按元素进行输出。在查找具体元素时按照np.where的语法规则进行查找。
arr = np.array([[2,3],[4,5]])
np.where(arr>3)
(array([1, 1], dtype=int64), array([0, 1], dtype=int64))