Python模块之Numpy(三)-- 数组的访问

        Numpy对数组的操作十分高效,这主要源于其对索引的使用。数组索引的使用和列表(list)类似,索引都是从0开始,在访问或者批量引用时,遵循左闭右开的原则。

对于一维数组

import numpy as np
arr = np.arange(10)
arr[3]  #访问索引为3的元素,即第4个元素
arr[2:6]  #访问索引位置为2至5的元素,共4个
arr[:5]  #访问索引位置5之前的所有元素,共5个
arr[-1]  #访问倒数第一个元素,‘-’表示倒数
arr[5:-1:1]  #以1为步长访问索引位置5到倒数第一个元素,不包括倒数第一个
arr[8:1:-2]  #以2为步长反方向访问索引位置8到索引位置1的元素,不包括索引位置1
arr[::-1]  #倒序逐一访问所有元素
arr[4:6] = 101,102  #将索引位置4和5的元素改为101和102

对于二维数组

arr = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
arr[0,2:4]  #索引第0行中第2列和第3列元素
arr[1:,4:]  #索引2,3行中第5列元素
arr[:,2]  #索引2列元素
arr[[(0,1,2),(1,2,3)]]  #索引arr[0,1],arr[1,2],arr[2,3]
arr[1:,(0,2,3)]  #索引第2,3行第0和2,3列元素
#改变数组的形状
arr = np.arange(20)  #创建一个有20个元素的一维数组
arr.reshape(4,5)  #将arr改为四列五行的二维数组

数组形状的改变

        在对数组进行操作的时候,有时候需要改变数组的维度,在 NumPy 中,常用 reshape 函数来改变数组的形状,但需要注意,元素个数必须匹配,如果指定的维度和数组元素的个数不吻合,会报错。还有ravel和flatte 函数这两个函数,都可以将数组展平,区别在于ravel函数只能对数组进行横向的展平,但是flatten函数则可以选择横向或者纵向展平,示例如下:

arr = np.arange(20)  #创建一个有20个元素的一维数组
arr.reshape(4,5)  #将arr改为四列五行的二维数组

arr = np.arange(20).reshape(4,5)  #创建四列五行的二维数组
arr.ravel()  #展平数组--横向
arr.flatten()  #展平数组--横向
arr.flatten('F')  #展平数组--纵向

        NumPy 也可以对数组进行组合,数组的组合类似于线性代数中矩阵的分块或者聚合,数组的组合主要有横向组合与纵向组合,用于数组组合的函数有hstack、vstack以及 concatenate,使用示例如下:

#先创建两个数组
arr1 = np.arange(20).reshape(4,5)
arr2 = arr1 * 2  
np.hstack((arr1,arr2))  #横向合并
np.vstack((arr1,arr2))  #纵向合并
np.concatenate((arr1,arr2),axis=1)  #横向合并
np.concatenate((arr1,arr2),axis=0)  #纵向合并
  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值