python数据切片操作 [:],[:,]

python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。
在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,‘a’]需要4个指针和四个数据,增加了存储和消耗cpu。
numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型

1.关于 [:j] 或者 [:i]:这是切片操作,在下标 i 或者 j 之前的元素都保留,适用于Python中的list(也就是数组),也适用于numpy科学结构(array等)。

下面用list来表示

# a是Python的一个列表(数据结构上叫做数组)
In [64]: a                                                                      
Out[64]: [[1, 2, 3, 4], [2, 3, 4, 5], [5, 6, 7, 8]]
 
# 例子1
In [65]: a[:2]                                                                  
Out[65]: [[1, 2, 3, 4], [2, 3, 4, 5]]
# 例子2
In [66]: a[1][:3]                                                               
Out[66]: [2, 3, 4]
  1. 关于[:,j] 或者 [:,i] :这也是切片操作,不同的是:保留第一个维度所有元素,第二维度元素保留到j;只适用numpy的科学数据结构

下面用numpy的数据结构举例

# b是一个numpy科学数据结构,格式是array
In [76]: b                                                                      
Out[76]: array([[1, 2, 3, 4],
                [2, 3, 4, 5],
                [5, 6, 7, 8]])
# 例子1
In [77]: b[:,2]                                                                 
Out[77]: array([3, 4, 7])
# 例子2
In [78]: b[:,3]                                                                 
Out[78]: array([4, 5, 8])
 
# 看看反面例子,如果是list结构的话
In [6]: x
Out[6]: [[1, 2, 3, 4], [2, 3, 4, 5], [5, 6, 7, 8]]
 
In [5]: x[:,:2]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-4b22ebda2101> in <module>()
----> 1 x[:,:2]
 
TypeError: list indices must be integers or slices, not tuple

定义一:在list里面,只存在元素,不存在元素中的元素;list里元素就是最小的成分,不可以再切片。

定义二:在array中(numpy的数据都可以)最后一个维度的数据才可以叫做元素,同样元素不可切分。

结合例子解释定义一:就算是二维、三维的list,元素就是axis=0的数据,例如上面的数据x=[[1,2,3,4],[2,3,4,5],[5,6,7,8]],元素就是[1,2,3,4]或者[2,3,4,5]或者[5,6,7,8],而不是更里面的数字1等等;在二维列表中写下x[:],但是不可以写x[:,:],根据定义一,第二个切片操作是不合法的。

np.array中

data[1::2]

从 data 列表中选取索引为奇数的元素。切片操作 1::2 表示从索引 1 开始,到列表末尾,步长为 2,即选取索引1、3、5等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值