NumPy的数组对象
3735字,阅读需时13分钟

NumPy的主要操作对象是同类型的多维数组,数组中的所有元素类型都是相同的,数组对象名是ndarray,别名是array。

一、创建数组

可以有多种方式创建NumPy数组:(1)使用NumPy的array函数从Python列表中创建数组,数组类型由列表中的数据类型确定;(2)使用NumPy的zeros函数创建数组元素全部为0的数组,默认情况下数组元素的类型为float64;(3)使用NumPy的ones函数创建数组元素全部为1的数组,默认情况下数组元素的类型为float64;(4)使用NumPy的empty函数创建数组元素为随机内容的数组,随机内容取决于存储器的状态;(5)使用NumPy的arange函数创建等间隔的数字数组。

1、使用NumPy的array函数创建数组

使用NumPy的array函数可以创建1维、2维、……、n维数组,array函数要求传入Python列表数据,传入Python列表数据的嵌套层次决定了创建数组的维数。下面给出了创建1维和2维数组的案例,更多维数组的创建与2维数组的创建类同。

(1)   创建1维数组

要创建1维数组,只需在array函数中传入单层列表数据即可。在程序中使用NumPy数学计算包,需要将NumPy包导入到程序中。

下面的代码创建了整数类型(int32)的1维数组,数组变量名称是dim1,np是numpy包的引用名称,传入到array函数的是单层列表。

>>> import numpy as np
>>> dim1 = np.array([12,19,20,22,66,89])
>>> dim1
array([12, 19, 20, 22, 66, 89])
>>>

(2)创建2维数组

只要在array函数中传入两层嵌套的列表数据即可创建2维数组。下面的代码创建了浮点类型(float64)的2维数组。

>>> dim2 = np.array([[0.3,0.11,0.98],[0.56,0.99,0.12]])
>>> dim2
array([[0.3 , 0.11, 0.98],
       [0.56, 0.99, 0.12]])

2、使用NumPy的zeros、ones、empty函数创建数组

使用NumPy的zeros、ones、empty函数可以创建指定维数的数组,zeros函数用0填充所有的数组元素,ones函数用1填充所有的数组元素,empty函数用随机内容填充所有的数组元素。

(1)创建1维数组

下面的代码分别使用zeros、ones、empty函数创建了a、b、c三个1维数组。a数组有3个元素,元素内容都为0,b数组有5个元素,元素内容都为1,c数组有3个元素,元素内容都为0(填充的元素内容机内容取决于存储器的状态)。

>>> import numpy as np
>>> a = np.zeros(3)
>>> a
array([0., 0., 0.])
>>> b = np.ones(5)
>>> b
array([1., 1., 1., 1., 1.])
>>> c = np.empty(3)
>>> c
array([0., 0., 0.])
>>>

(2)创建2维或更多维数组

使用zeros、ones、empty函数创建2维或更多维数组时,需要传入Python元组数据,元组内的元素个数(元组长度)指定了数组的维度,元素的值指定了当前元素所在的数组维度所包含元素的个数。例如:使用元组(3,4)创建的a数组是2维数组,第1维有三个元素,第2维有4个元素;使用元组(3,2,4)创建的d数组是3维数组,第1维有3个元素,第2维有2个元素,第3维有4个元素。

>>> import numpy as np
>>> a = np.zeros((3,4))
>>> a
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
>>> b = np.ones((2,3))
>>> b
array([[1., 1., 1.],
       [1., 1., 1.]])
>>> c = np.empty((2,1))
>>> c
array([[0.],
       [0.]])
>>> d = np.zeros((3,2,4))
>>> d
array([[[0., 0., 0., 0.],
        [0., 0., 0., 0.]],
 
       [[0., 0., 0., 0.],
        [0., 0., 0., 0.]],
 
       [[0., 0., 0., 0.],
        [0., 0., 0., 0.]]])
>>>

(3)创建指定类型的数组

使用zeros、ones、empty函数可以创建指定数据类型的数组,zeros、ones、empty函数创建数组时,默认的数据类型是float64,如果需要创建其它数据类型的数组,可以在函数中指定数据类型。

下面的代码创建数据类型为complex的二维数组。

>>> import numpy as np
>>> a = np.zeros((3,4),dtype=complex)
>>> a
array([[0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j]])
>>>

 

3、使用NumPy的arange创建等间隔的数字数组

NumPy的arange函数可以创建等间隔的数字数组。arange函数需要传入3个参数,第一个参数是起始值,第二个参数是结束值,第三个参数指定了从起始值到结束值的间隔。例如起始值是1,结束值是10,间隔是2,则创建的数组元素为1、3、5、7、9。当第三个参数省略时,NumPy会选择数字1作为间隔数字。

下面的代码创建了count和index两个1维数组,count的间隔为1,index的间隔为2。

>>> count = np.arange(1,5)
>>> count
array([1, 2, 3, 4])
>>> index = np.arange(1,10,2)
>>> index
array([1, 3, 5, 7, 9])
>>>

二、NumPy数组对象的属性

NumPy的array数组对象提供了一些关键属性,可以输出数组的特性。下表给出了array数组对象的关键属性名称及作用。

 image.png

下面的代码创建了2维数组a,第1维有2个元素,第2维有3个元素。数组的总元素个数为2*3=6,数组元素的数据类型是int32,每个字节的元素长度是4个字节。

>>> import numpy as np
>>> a = np.array([[2,3,6],[1,6,9]])
>>> a.ndim
2
>>> a.shape
(2, 3)
>>> a.size
6
>>> a.dtype
dtype('int32')
>>> a.itemsize
4
>>>
我要评论
全部评论
郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
下载APP

手机、电脑同步学

用微信或手机浏览器扫描二维码,即可下载APP。

  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有