numpy的核心-“ndarray” 即多维数组,数组是python的一个重要数据结构,在pyhton中,坚持万物为对象 原则,数组也是个对象,然而这个对象本身有些特别之处,具体表现在其属性以及方法上。
首先需要创建一个数组对象:data = np.array([1,2,3,4,5])(在此之前需要首先导入numpy)
如果想输出data 直接打一个data 则直接显示data其中的 数据。
如果想查看data的数据类型,使用type()函数
由此可知,我们刚才所创建的为数组,其类型为numpy.ndarray类型,此时data为此累的对象。作为对象,其定有一些属性以及方法,因此dir()依然有用。
dir()函数:
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
详解:https://blog.youkuaiyun.com/kyjl888/article/details/78940805
此时,使用dir来查看data的属性及方法,还可以data?来查看。
注意:因为刚开始学习,jupyter使用的不熟悉,因此在打代码的过程中,出现了in[*]问题:
原因可能是,因为上面的代码错误,导致下面的代码无法执行,此时需要点击
运行
从上往下执行代码,检查错误。
注意:如果下面已经运行出了执行结果,但是上面又修改了,并且出错了,
那么重新执行的时候下面的执行结果还会保留,因为没有执行到这里来,
程序在上面就已经出错退出了。
我们还有另外一种方法:data?
可见,这是数组的官方文档,对数组进行了详细的说明。
其中我们创建的数组中元素是有类型的,如果想查看数组的类型,可使用data.dtype进行查看。
通过数组对象 的dtype属性就可以得到组成数组的元素的类型。
这时候我们就有疑问了,想要知道数组的元素有哪些类型?
首先我们必须要牢记的是:组成数组的元素必须是同一种类型。显然跟python中的列表不同、
为了适应numpy所承担的计算工作,数组中元素的内置类型(指已经定义好的类型,除此之外,还可以自定义元素的类型)
主要有一下几种:
int:int8 ,int16,int32,int64 :字符编码 i:i1,i2,i4,i8
说明:有符号整形数。int8表示其长度为8位,能够表示-128~127之间的数,其他类型一次类推。
uint:uint8,unit16,uint32,uint64:字符编码:u:u1,u2,u4,u8
说明:无符号整数型,位数含义同上。
bool 编码:b 说明:布尔型。
float:float16,float32,float64,float128 字符编码 f2,f4,f8,f16
说明:浮点数,其中float16为半精度浮点数,float32为单精度浮点数,float64位双精度浮点数,float128为扩展精度浮点数。
complex:complex64,complex128,complex256 字符编码:c8,c16,c32
说明:复数,分别用32 ,64,128位来表示实部与虚部。
string_ 字符编码:s 说明:固定长度的字符串类型
unicode_ 字符编码:u 说明:固定长度的unicode类型
ps:字符编码 是每一种类型对应的字符串的表示方法,是为了兼容numpy的前身numeric而设定的。
当某个数组一旦建立,其元素的类型是确定不能随意更改的,当我们需要修改元素的类型时,该怎么操作?
我们在查看其属性类型的时候,就会发现其类型由整形变为浮点型。
我们刚才使用的astype()函数,是一个数组对象的一个方法,他能根据指定的类型(参数指定元素类型)新生成一个数组,
新数组new_data相对于data只有元素的类型不同。
数组的外貌
除了dtype属性外,数组对象还有其他的一些常用的属性,通过这些属性,我们就能了解数组对象的基本情况,比如数组的形状,维度等等。
shape()函数返回的是一个元组,其中的元素是由整数构成的,他们代表着该数组的形状——每个轴的元素数
其中,(3,)表示的意思是0轴上有3个元素。
我们还可以利用size来返回数组的元素个数。
我们总结一下常用的numpy数组对象的属性方法:
dtype:返回数组中元素的类型
shape:返回有整数组成的元组,元组中的每个整数数,分别对应数组的每个轴的元素个数
size:返回一个整数,代表数组中元素的个数
ndim:返回一个整数,代表数组的轴的个数,即维度
nbytes:返回一个整数,代表用于保存数据的字节数
我们可以help(a.dtype)来查看,或者a.dtype?