教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Numpy模块执行数组间的转换操作

更新时间:2021年12月09日10时15分 来源:传智教育 浏览次数:

好口碑IT培训

ndarray对象提供了一些可以便捷地改变数组基础形状的属性和方法,例如,将一个3行4列的二维数组转换成6行2列的二维数组,关于这些属性和方法的具体说明如表9-3所示。



上述这些方法都能够改变数组的形状,但是,reshape()、ravel()方法和T属性返的都是一个已经修改的新数组,并不会修改原始数组。例如:

>>> import numpy as np
>>> arr = np.array([[1, 2, 3], [4, 5, 6]]]    #创建一个2行3列的数组
>>> arr
array([[1, 2, 3],
   [4,5,6]])
>>> new_arr = arr.reshape((3, 2))     #返回维度为(3,2)的数组
>>> new arr
array([[1, 2],
   [3,4],
   [5,6]])
>>> arr.ravel()     #对数组进行降维处理
array([1, 2, 3, 4, 5, 6])
>>> arr.T           #对数组进行轴对换
array([[1, 4],
   [2,5],
   [3,6]])
>>> arr            #查看原始数组是否发生变化
array([[1, 2, 3],    
      [4,5,6]])

numpy数组制样支持索引和切片操作,具体的用法与序列类型相似。例如:

>>>arr = np.arange(1,9).reshape((4,22)) #生成4行2列的数组
>>> arr
array([[1, 2],
   [3,4],
   [5,6],
   [7,8]])
>>> arr[2]            #获取第2行数据
array([5, 6])
>>> arr[1:3]          #获取第1~2行数据
array([[3, 4],
   [5,6]])

除此之外,numpy中提供了一批具有基本数学运算功能的函数,如表9-4所示。

表9-4 numpy模块的算术运算函数

表9-4中列举的所有运算函数的参数y都是可选的,如果指定了参数y,结果将被保存到y中,比如np.add(a,b,a)表示a+=b;如果没有指定参数y,结果将被保存到一个新创建的数组中,比如c=np.add(a,b)表示c=a+b。

数组无须循环遍历便可以对每个元素执行批量的算术操作,也就是说形状相同的数组之间执行算术运算时,会应用到位置相同的元素上进行计算。例如,数组a=[1,2,3]和数组b=[4,5,6],a*b所得的结果为1*4、2*5和3*6组成的一个新数组。若两个数组的基础形状不同,numpy可能会触发广播机制,该机制需要满足以下任一条件。

(1)数组在某维度上元素的长度相等。

(2)数组在某维度上元素的长度为1。

广播机制描述了numpy如何在算术运算期间处理具有不同形状的数组,较小的数组被“广播”到较大的数组中,使得它们具有兼容的形状。例如:

>>> a= np.array([1, 2, 3])
>>> b = np.array([4,5, 6])
>>>a+b          # 形状相同的数组进行求和运算
array([5, 7, 9])
>>> c = np.array([[7,8,9],[10,11,12]])
>>>a+c         # 形状不同的数组进行求和运算
array([[ 8, 10, 12],
[11, 13, 15]])

numpy模块还包括线性代数、随机和概率分布、基本数值统计运算、傅里叶变换等丰富的功能,欲了解更多功能,读者可以到numpy官网查询学习。






猜你喜欢:

NumPy常用的数据类型有哪些?怎样进行转换?

NumPy数组有几种创建方法?

NumPy数组对象介绍:ndarray对象的常用属性

BRIEF算法步骤详细介绍

传智教育AI人工智能培训

0 分享到:
和我们在线交谈!