python基本语法练习

这篇博客作者通过实例回顾Python的基本语法,重点讲解了一维字符串的截取操作,包括步长的理解,以及在多维情况下如何使用numpy进行数组切片。在多维数组中,介绍了如何通过指定行和列来选取元素,并提到了None在切片中的作用,即增加新的维度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前自学过python的相关语法内容,知识点过了一遍,发现印象不深刻,写个博文加深印象。

1.一维字符串的截取操作

初始化一个个字符串,如下


>>> a = list((1,2,3,4,5,6,7,8,9,10,11,12,13,14))
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[1:4]
[2, 3, 4]

>>> a[:4]
[1, 2, 3, 4]

>>> a[4:]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[6:-1]
[7, 8, 9, 10, 11, 12, 13]
//这里的-1表示从尾部开始数起的

>>> a[-3:-1]
[12, 13]          //感受下

>>> a[::2]
[1, 3, 5, 7, 9, 11, 13]

包含两个冒号的样式是怎么回事呢?
第一个冒号隔开的这两个部分和前面的意思是一样的,就是指定数组中间元素的区间,后面那个部分则是指的一个步长


>>> a[::3]
[1, 4, 7, 10, 13]   //再来感受下

>>> a[::-1]
[14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

最后一个为什么呢?


>>> a[1:8:-1]
[]
>>> a[8:1:-1]
[9, 8, 7, 6, 5, 4, 3]

这样就很明白了,最后步长为-1表示方向。前面也有一个方向,a[1:8]表示从1到8,是正向;a[8:1]表示从8到1,是负向。步长为正,表明正向,步长为负,表明负向。

2.多维情况
多维的数组,我们借助下numpy这个工具包来看看。

不多说,首先初始化!


>>> a = np.arange(16).reshape(4,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])


>>> a[1:3, 2:5]
array([[ 6,  7],
       [10, 11]])
>>> a[1:4, 2:5]
array([[ 6,  7],
       [10, 11],
       [14, 15]])
>>> a[2:4, 2:5]
array([[10, 11],
       [14, 15]])
>>> a[2:4, 1:5]
array([[ 9, 10, 11],
       [13, 14, 15]])

我们将逗号前面的称作N1,后面的称作N2。从以上的例子来看,N1切片的位置是行,N2切片的位置是列,a[1:3, 2:5],1:3表示行取大于1小于等于3的行,2:5表示列取大于2小于等于5的列。其它例子类似。

同理,如果把1:3改成1:3:2,和一维的意义类似,负数也是一样。再看下面的例子

>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> a[:, None]
array([[[ 0,  1,  2,  3]],

       [[ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11]],

       [[12, 13, 14, 15]]])

>>> a[:, None].shape
(4, 1, 4)
>>> a.shape
(4, 4)

为什么列的参数改成None,输出的shape都变了,这里大家要知道,None代表新增加一个维度,它有一个别称叫newaxis,大家可以输出一下numpy.newaxis就知道了,那么这个别称应该顾名思义了吧。再看下面的东西


>>> print np.newaxis
None
>>> a[:, : , None].shape
(4, 4, 1)
>>> a[:, None].shape
(4, 1, 4)
>>> a[..., None].shape
(4, 4, 1)
>>> a[None,:].shape
(1, 4, 4)

可以看到None放在哪一维,就会在哪一维上出现新的维度。同时可以看到三个点和两个连续的点的效果一样。

参考文献:
1.http://shmilyaw-hotmail-com.iteye.com/blog/1782733
2.http://blog.youkuaiyun.com/z13653662052/article/details/78010654

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值