python中numpy的数组维度与切片

数组的索引与切片

  • 索引:获取数组中特定位置元素的过程
  • 切片:获取数组元素子集的过程

最简单基本的切片

a = np.array([9,8,7,6,5])
a[2]    #out 7
a[1:4:2}  #out array[8,6]

数组的切片

a = np.arange(24).reshape((2,3,4))
a   #out如下图

a[1,2,3]  #out:23
a[0,1,2]  #out:6
a[-1,-2,-3] #out:17

**数组的切片

a[:, 1, -3]   #out:array[5,17]
a[:, 1:3 ,:]  #如下图
a[:, :, ::2]  #如下图2

为什么是这样的呢?

1.1维度的解释

关于维度,一维其实就是数组内容,最基本的几个数据组成的一个数组就是一维数组

  • [0,1,2,3] #一维数组
  • [ [0,1,2,3], [0,1,2,3], [1,2,3,4] ] #数组里面包含数组,二维数组
  • [ [ [0,1,2,3], [0,1,2,3] ],

[ [0,1,2,3], [0,1,2,3] ] ] #类似层层嵌套(这是个三维数组)

其实有一个简单判断是几维数组的方法,那就是:数中括号最多的括号数,括号数为几,就是几维度

例如,三维数组最前面有三个括号(所有数字前括号最多的,所以为三维数组)

这里其实还有一个易错点,不是有几个数组就有几维了(实际无论有多少个数组它都是在这一个维度内),很多次我都会无意识犯这种错误,认为类似shape(10,10)是10维数组,其实这是很离谱的错误,其实它只是一个二维数组.取决于数组的并不是数组的个数,而是数组嵌套的次数.其实维度数为shape内的数字个数,例如:

(10,2,3) 就是三维数组

(1,3,2,7,4)就是五维数组

1.2数组切片的格式

数组的切片格式是:[n维,n-1维.,...,3维,2维,1维]

其实每个维度切片都是靠a:b类似的类型,而靠","才分开了各个维度

所以解释起来也就是

2.一维取到1:3(取维度和行,列数从零开始),而零维和二维全取

3.一维二维全取,零维步长为2.

练习:打印边框为0内部为1的10*10矩阵

import numpy as np
a = np.ones((10,10))
a[0,:] = 0
a[-1,:] = 0
a[:,0]= 0
a[:,-1]= 0
a

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值