ndarray索引和切片

索引

使用下标获取数组元素。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
1.获取所有元素
print(arr),获取所有元素。
2.获取某一行元素
print(arr[2]),获取2行的元素。
3.获取某一个元素
print(arr[2][0]) or print(arr[2, 0]),获取2行0列的元素(即7)。
4.布尔型索引

names = ['a', 'b', 'c']
values = [[1, 2], [2, 3], [4, 5]]
print(names=='b')
print(values[names=='b'])

得到:
在这里插入图片描述
可以看出,names=='b'输出一个布尔型的数组,names数组中等于’b’的元素的位置为True,否则为False。而values[names=='b'],当values数组的行数与names数组的列数相等时,按照布尔值输出True的行;如果不相等,会报错。
e.g.

print(names!='b')
print(values[~(names=='b')])

得到:
在这里插入图片描述
5.花式索引
即利用整数数组进行索引。

arr = np.arange(32).reshape(8, 4)
print(arr)

得到:
在这里插入图片描述
(1) print(arr[[1, 3, 5, 7]]),得到从上往下数1、3、5、7行(即第2、4、6、8行):
在这里插入图片描述
(2) print(arr[-1, -3, -5, -7]),得到从下往上数第1、3、5、7行:在这里插入图片描述
(3) print(arr[[1, 3, 5, 7], [0, 1, -2, 3]]),得到位于(1,0)、(3,1)、(5,-1)、(7,3)位置的元素一元数组:
在这里插入图片描述
(4) print(arr[[1, 3, 5, 7]][:, [0, 3, 1, 2]]),得到:
在这里插入图片描述第一个[ ]中的[1, 3, 5, 7]指向行,第二个[ ]中的:指向所有列,然后按[0, 3, 1, 2]的顺序依次取列值。

分片

和列表相似,使用冒号 : 进行分片。
1.批量赋值:

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]);
arr[5:8] = 12;	#区间为左闭右开
print(arr)
arr[5:8] = [1, 2, 3]
print(arr)

得到:
在这里插入图片描述
此处对数组进行的修改都是对其原始数组元素值的修改,numpy数组不另外copy数组副本来应对数据更改。
2.复制数组
arr[x:y].copy() ,复制分片数组;arr.copy(),复制数组。
3.多维度取值
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
(1)取一个维度的切片:print(arr[:2]),得到:
在这里插入图片描述
(2)多维度切片:print(arr[:2, 1:]),得到:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值