numpy中的ndarray方法和属性详解


Posted in Python onMay 27, 2019

NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是NumPy中的轴(axes),而轴的数量——秩,就是数组的维数。

Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size,

itemsize,nbytes,ndim,shape,strides,ctypes,base等等。

>>> import numpy as np
>>> x=np.array([[1,2,3],[9,8,7],[6,5,4]])
>>> x.T  #获得x的转置矩阵
array([[1, 9, 6],
[2, 8, 5],
[3, 7, 4]])
>>> print x.flags #返回数组内部的信息
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
>>> x.flat[2:6]  #将数组变为1维数组,并获取其中的一部分数据
array([3, 9, 8, 7])
>>> x.flat = 4; x  #将值赋给1维数组,再转化成有原有数组的大小形式
array([[4, 4, 4],
[4, 4, 4],
[4, 4, 4]])
>>> x
array([[4, 4, 4],
[4, 4, 4],
[4, 4, 4]])

ndarray.imag # 为复变函数中含有虚部的数组,如下:

>>> x = np.sqrt([2+3j, 5+0j])  # 创建一个复数
>>> x
array([ 1.67414923+0.89597748j, 2.23606798+0.j    ])
>>> x.imag #获得复数的虚部
array([ 0.89597748, 0.    ])
>>> x.real  #获得复数的实部
array([ 1.67414923, 2.23606798])
>>> x=np.arange(10) #随机生成一个数组,并重新命名一个空间的数组
>>> x.reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> x.size  #获得数组中元素的个数
10
>>> x.ndim #获得数组的维数
>>> x.shape #获得数组的(行数,列数)
(10,)
>>> y=x.reshape(5,2)
>>> y
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> y.base  #获得该数组基于另外一个对象数组而来,如下,y是根据x而来
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Ndarray对象的方法

ndarray.ptp(axis=None, out=None) : 返回数组的最大值—最小值或者某轴的最大值—最小值

ndarray.clip(a_min, a_max, out=None) : 小于最小值的元素赋值为最小值,大于最大值的元素变为最大值。

ndarray.all():如果所有元素都为真,那么返回真;否则返回假

ndarray.any():只要有一个元素为真则返回真

ndarray.swapaxes(axis1, axis2) : 交换两个轴的元素,如下

>>> z.swapaxes(0,1)
array([[2, 4, 6, 8],
[3, 5, 7, 9]])

下面为改变数组维度和大小的方法:

ndarray.reshape(shape[, order]) :返回重命名数组大小后的数组,不改变元素个数.

ndarray.resize(new_shape[, refcheck]) :改变数组的大小(可以改变数组中元素个数).

ndarray.transpose(*axes) :返回矩阵的转置矩阵

ndarray.swapaxes(axis1, axis2) : 交换两个轴的元素后的矩阵.

ndarray.flatten([order]) : 复制一个一维的array出来.

ndarray.ravel([order]) :返回为展平后的一维数组.

ndarray.squeeze([axis]) :移除长度为1的轴。

ndarray.tolist():将数组转化为列表

ndarray.take(indices, axis=None, out=None, mode='raise'):获得数组的指定索引的数据,如:

>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> a.take([1,3],axis=1) #提取1,3列的数据
array([[ 1, 3],
[ 5, 7],
[ 9, 11]])

numpy.put(a, ind, v, mode='raise'):用v的值替换数组a中的ind(索引)的值。Mode可以为raise/wrap/clip。Clip:如果给定的ind超过了数组的大小,那么替换最后一个元素。

numpy.repeat(a, repeats, axis=None):重复数组的元素,如:
>>> x = np.array([[1,2],[3,4]])
>>> np.repeat(x, 2)
array([1, 1, 2, 2, 3, 3, 4, 4])
>>> np.repeat(x, 3, axis=1)
array([[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4]])
>>> np.repeat(x, [1, 2], axis=0)
array([[1, 2],
[3, 4],
[3, 4]])

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):返回指定轴的累积,如下:

>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> a.cumprod(axis=1) #得到竖轴的累积
array([[  0,  0,  0,  0],
[  4,  20, 120, 840],
[  8,  72, 720, 7920]])

ndarray.mean(axis=None, dtype=None, out=None):返回指定轴的数组元素均值

ndarray.cumsum(axis=None, dtype=None, out=None):返回指定轴的元素累计和。如:

>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> a.cumsum(axis=1)
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])

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):将数组中的元素按指定的精度进行四舍五入,如下:

>>> np.around([0.37, 1.64])
array([ 0., 2.])
>>> np.around([0.37, 1.64], decimals=1)
array([ 0.4, 1.6])
>>> np.around([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value
array([ 0., 2., 2., 4., 4.])
>>> np.around([1,2,3,11], decimals=1) # ndarray of ints is returned
array([ 1, 2, 3, 11])
>>> np.around([1,2,3,11], decimals=-1)
array([ 0, 0, 0, 10])

ndarray.conj():返回所有复数元素的共轭复数,如:

>>> b=np.array([[1+2j,3+0j],[3+4j,7+5j]])
>>> b
array([[ 1.+2.j, 3.+0.j],
[ 3.+4.j, 7.+5.j]])
>>> b.conj()
array([[ 1.-2.j, 3.-0.j],
[ 3.-4.j, 7.-5.j]])

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():返回非零元素的索引

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
Python json模块使用实例
Apr 11 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
python多进程实现文件下载传输功能
Jul 28 Python
Python3爬虫全国地址信息
Jan 05 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
python Django 反向访问器的外键冲突解决
May 20 Python
python套接字socket通信
Apr 01 Python
Python中第三方库Faker的使用详解
Apr 02 Python
numpy.linspace函数具体使用详解
May 27 #Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 #Python
Django框架设置cookies与获取cookies操作详解
May 27 #Python
numpy下的flatten()函数用法详解
May 27 #Python
详解numpy的argmax的具体使用
May 27 #Python
numpy.random模块用法总结
May 27 #Python
Django框架自定义session处理操作示例
May 27 #Python
You might like
php实现telnet功能示例
2014/04/08 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
PHP函数积累总结
2019/03/19 PHP
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python多任务及返回值的处理方法
2019/01/22 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python中的asyncio代码详解
2019/06/10 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python全栈开发语法总结
2020/11/22 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
职称自我鉴定
2013/10/15 职场文书
自我鉴定书
2014/03/24 职场文书
委托公证书范本
2014/04/03 职场文书
校园元旦活动总结
2014/07/09 职场文书
公司慰问信范文
2015/03/23 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers