python中的切片(numpy数组双冒号::后加步进值-1)

python切片(1)

基本形式:[start:stop]

seq = [7, 2, 3, 7, 5, 6, 0, 1]
print(seq[1:5])

输出:[2,3,7,5]
切片还可以将序列赋值给变量:

seq = [7, 2, 3, 7, 5, 6, 0, 1]
seq[3:4] = [6, 3]
print(seq)

输出:[7,2,3,6,3,5,6,0,1]

起始位置的索引start是包含的,而结束位置的索引stop并不包含,因此元素的数量是stop-start

start和stop可以省略,如果省略,默认传入序列的起始位置或结束位置

print(seq[:5])

输出[7,2,3,6,3]

print(seq[3:])

输出[6,3,5,6,0,1]

负索引可以从序列的尾部进行索引:

print(seq[-4:])

输出[5,6,0,1]

print(seq[-6:-2])

输出[6,3,5,6]

序列  [7,  2,  3,  6,  3, 5,  6, 0, 1]
正索引 0   1   2   3   4  5   6  7  8
负索引 -9 -8 -7 -6  -5  -4  -3  -2 -1

python切片(2)

步进值可以在第二个冒号后使用,意思是每隔多少个数取一个值

seq = [7, 2, 3, 6, 3, 5, 6, 0, 1]
print(seq[::2])

输出:[7, 3, 3, 6, 1]
对列表或者元组进行翻转时,向步进值传-1:

print(seq[::-1])

输出:[1, 0, 6, 5, 3, 6, 3, 2, 7]

numpy数组双冒号::后加步进值-1

import numpy as np
x = np.array([[[1, 2, 3], [4, 5, 6]],
              [[1, 2, 3], [4, 5, 6]],
              [[11, 22, 33], [14, 22, 33]],
              [[11, 22, 33], [14, 22, 33]]
              ]
             )
print('转换前', x)
print(x.shape)

输出:

转换前 [[[ 1  2  3]
  [ 4  5  6]]

 [[ 1  2  3]
  [ 4  5  6]]

 [[11 22 33]
  [14 22 33]]

 [[11 22 33]
  [14 22 33]]]
(4, 2, 3)
 y = x[:, ::-1, :] #第一个维度不变,第二个维度H翻转,第三个维度不变
print('转换后', y)
print(y.shape)

输出:

转换后 [[[ 4  5  6]
  [ 1  2  3]]

 [[ 4  5  6]
  [ 1  2  3]]

 [[14 22 33]
  [11 22 33]]

 [[14 22 33]
  [11 22 33]]]
(4, 2, 3)
p = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
p = np.array(p)
print(p[:, :-1])  # 行不变,列取倒数第二个到最前一个
print(p[:, ::-1]) # 行不变,列翻转

输出:

[[1 2]
 [4 5]
 [7 8]]
[[3 2 1]
 [6 5 4]
 [9 8 7]]
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值