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文件操作整理汇总
Oct 21 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
Python多线程编程简单介绍
Apr 13 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
python切片及sys.argv[]用法详解
May 25 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
python 实现敏感词过滤的方法
Jan 21 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
Python 实现将某一列设置为str类型
Jul 14 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 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
FCKeditor的安装(PHP)
2007/01/13 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php不写闭合标签的好处
2014/03/04 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
简单了解python单例模式的几种写法
2019/07/01 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
我的梦想演讲稿
2014/04/30 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Python基础之进程详解
2021/05/21 Python