numpy中ndarray数据结构简介
一、综述
1、ndarray的本质是:对象
2、ndarray是numpy中的数据结构(叫做:n维数组),是同构数据多维容器,所有元素必须是相同类型
3、面向数组的编程和思维方式:用简洁的数组表达式代替循环写法,通常叫做 --‘矢量化’
二、创建ndarray对象
3种方式: (1)从python的基础数据对象转化; (2)通过numpy内置函数生成 ; (3)从硬盘(文件)中直接读取
2.1 直接从list对象创建
a = np.array([1,2,3,4,5]) # array([1,2,3,4,5])
b = np.array([1,2,3,4,5],dtype=np.float) # array([1.,2.,3.,4.,5.]) 创建时直接转换数据类型
c = a.astype(np.float64) #array([1.,2.,3.,4.,5.]) 创建后,通过内置的astype() 函数,转换数据类型
2.2 通过numpy内置函数生成
2.3 从硬盘(文件)中直接读取
numpy.loadtxt()
参数:
fname :文件 或者文件路径(字符串),支持压缩的数据文件 包括gz、bz
dtype:数据类型,默认为float64(64位双精度浮点数)
comments: 字符串或 字符串组成的列表,默认为# , 是表示注释字符集开始的标志
delimiter: 字符串,用来分割多个列的分隔符,默认 为 空格
converters: 字典, 用于将特定列的数据,转换为字典中对应的函数的浮点型数据,默认为空
skiprows : 正整数n,读取时跳过前n行,默认为零
usecols : 元组(元组内数据为列的数值索引), 用来指定要读取数据的列(第一列为0),默认为空
unpack: 布尔值(True/False), 用来指定是否转置
ndmin : 整数型,值域为0、1、2,默认为0, 用于指定返回的数组至少包含特定维度的数组
numpy.savetxt()
三、ndarray属性:
1、ndarray.ndim:数组的维数(即数组轴的个数,也被称作为 秩 )。
2、ndarray.shape:数组的维数、维度,返回一个元组,这个元组的长度就是维度的数目,即ndim属性。比如2排3列的矩阵,其shape就是二元组(2,3)
3、ndarray.size:数组元素的总个数,等于shape属性的 元组中各元素的乘积。
4、ndarray.dtype:表示数组中元素类型的对象
5、itemsize : 数组中 每个元素 占用的 字节大小
6、ndarray.flags #返回数组内部的信息(
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False)
特殊,ndarray对象可 通过 reshape() 方法,重新组织数组的维数维度(即数组的形状),其中用 -1代表自动推断某维度的维数
四、ndarray方法
ndarray.ptp(axis=None,out=None) # 返回数组的最大值-最小值 或者 某一个轴的最大值-最小值
ndarray.clip(a_min,a_max,out=None) # 小于最小值的赋值为 最小值 ;大于最大值的 赋值为 最大值
ndarray.all() # 如果所有元素都为真,那么返回真;否则,返回假
ndarray.any() #如果所有元素有任何一个真,则返回真
ndarray.swapaxes(axis1,axis2) # 交换两个轴的元素, 轴用数字表示,0,1,2......
下面为改变数组维度和大小的方法
ndarray. reshape() # 改变数组的形状,不改变数组中元素的个数
ndarray.resize() # 改变数组元素的个数
ndarray.transpose(*axes) # 返回转置矩阵
ndarray.flatten() # 将原矩阵转换为一维数组
ndarray.reval() # 返回 一维数组
ndarray.squeeze() # 移出长度为1的轴
ndarray.tolist() # 将数组转化为列表
ndarray.take(indices,axis=None,out = None,mode = 'raise') # 获得数组的指定索引的数据
numpy.put(a,index,v,mode='raise') # 用v的值替代数组a中index处的值,Mode可以为raise/wrap/clip 。clip :如果给的index超过了数组的大小,那么替换最后一个元素
numpy.repeat(a,repeats_num,axis = None) # 重复数组的元素
numpy.tile(A, reps):根据给定的reps重复数组A,和repeat不同,repeat是重复元素,该方法是重复数组。
ndarray.var(axis=None, dtype=None, out=None, ddof=0):返回数组的方差,沿指定的轴。
ndarray.std(axis=None, dtype=None, out=None, ddof=0):沿给定的轴返回数则的标准差
ndarray.prod(axis=None, dtype=None, out=None):返回指定轴的所有元素乘机
ndarray.cumprod(axis=None, dtype=None, out=None):返回指定轴的累积,如下:
ndarray.mean(axis=None, dtype=None, out=None):返回指定轴的数组元素均值
ndarray.cumsum(axis=None, dtype=None, out=None):返回指定轴的元素累计和。
ndarray.sum(axis=None, dtype=None, out=None):返回指定轴所有元素的和
ndarray.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None):返回沿对角线的数组元素之和
ndarray.round(decimals=0, out=None):将数组中的元素按指定的精度进行四舍五入
ndarray.conj():返回所有复数元素的共轭复数,
ndarray.argmin(axis=None, out=None):返回指定轴最小元素的索引。
ndarray.min(axis=None, out=None):返回指定轴的最小值
ndarray.argmax(axis=None, out=None):返回指定轴的最大元素索引值
ndarray.diagonal(offset=0, axis1=0, axis2=1):返回对角线的所有元素。
ndarray.compress(condition, axis=None, out=None):返回指定轴上条件下的切片。
ndarray.nonzero():返回非零元素的索引
五 、ndarray数据类型