numpy 数组的切片操作

这两天看到numpy数组的切片操作,记录一下,方便以后查看

1. 常规操作

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

a = np.arange(10)
print(a) # 输出 [0 1 2 3 4 5 6 7 8 9]
s = slice(2, 10, 2) # 创建一个切片对象,从索引2开始,终止于索引10(不包含10) ,步长 2
print(a[s])  #输出 [2 4 6 8]

s2 = a[1:10:2]
print(s2) #输出  [1 3 5 7 9]
print(a[1]) #输出 1
print(a[2:]) #输出从下标为2开始,到最后
print(a[:5:2]) #输出从下标0开始到下标5(不包含下标5),步长为2

2. 二维和多维数组的切片

# 多维数组
# 二维数组
a2 = np.arange(12).reshape(4, 3)
print(a2)
print(a2[:, 2]) # 取下标为2的整列数据

# # 对于超过3维的数组,可以用 '...' 来简化操作
a = np.arange(24).reshape(2, 3, 4)
print(a)
print(a[1 , ...])  # 等价于 print(a[1, :, :])
print(a[... , 1])  # 等价于 print(a[ :, :, 1])

3.索引

# 索引

arr = np.array([[1,2,3,4],
                [2,3,4,5],
                [3,4,5,6],
                [4,5,6,7]])
# print(arr[[0,2],]) #输出 arr 的第0行和第一行
'''
[[1 2 3 4]
 [3 4 5 6]]
 '''
# print(arr[..., [2,3]]) # 输出 arr 的第2列和第三列
'''
[[3 4]
 [4 5]
 [5 6]
 [6 7]]
'''
print(arr[..., [3, 2]]) #注意顺序
'''
[[4 3]
 [5 4]
 [6 5]
 [7 6]]
 '''
# print(arr[[0, 2], [2, 3]]) #输出 第下标为0的行的第下标为2的列, 和 第下标为2的行的第下标为3的列
'''
[3 6]
'''


# boolean/mask index
mask = arr > 5 # arr 数组中值大于5
print(mask)
'''
[[False False False False]
 [False False False False]
 [False False False  True]
 [False False  True  True]]
'''

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值