数据分析(三)

本文详细介绍了如何使用Python的NumPy库进行一维和多维数组的索引与切片操作,包括单个数据和多个数据的选取方式,以及条件索引的应用。通过实例展示了不同类型的切片技巧,帮助读者熟练掌握NumPy数组的操作。

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

3. 索引与切片

3.1 一维数组

>>> import numpy as np
>>> arr1 = np.arange(9)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])

# 取值一个数据
>>> print(arr1[0])
0
# 取多个值
>>> print(arr1[1:-1])
[1 2 3 4 5 6 7]
>>> print(arr1[::-1])
[8 7 6 5 4 3 2 1 0]
>>> print(arr1[1:7:3])
[1 4]

注意点:

  1. 取单个数据,取下标,下标从0开始
  2. 取多个数据,:隔开,左闭右开
  3. 参考列表[起始位置:终点位置:步长],左闭右开

3.2 多维数组

>>> arr2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

# 单独的一行
>>> arr2[1]
array([3, 4, 5])

# 取连续多行
>>> arr2[1:3,:]
array([[3, 4, 5],
       [6, 7, 8]])

# 取不连续多行
>>> arr2[[0,2],]
array([[0, 1, 2],
       [6, 7, 8]])

# 单独的一列
>>> arr2[0:3,1]
array([1, 4, 7])

# 取连续多列
>>> arr2[:,1:3]
array([[1, 2],
       [4, 5],
       [7, 8]])

# 取不连续多列
>>> arr2[:,[0,2]]
array([[0, 2],
       [3, 5],
       [6, 8]])


# 练习
>>> arr2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>>arr2[[0,2],[0,2]]
array([0, 8])

>>>arr2[0:2,][:,1:3]
array([[1, 2],
       [4, 5]])

3.3 条件索引

>>> arr2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>> arr2>3
array([[False, False, False],
       [False,  True,  True],
       [ True,  True,  True]])
>>>arr2[arr2>3]
array([4, 5, 6, 7, 8])

注意点:返回所有条件为真的数据,组成了一个一维数组

>>> arr2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

# 非
>>> arr2[~(arr2>3)]
array([0, 1, 2, 3])

# 与
>>> arr2[(arr2%2==0)&(arr2>3)]
array([4, 6, 8])

# 或
>>> arr2[(arr2>3)|(arr2%2!=0)]
array([1, 3, 4, 5, 6, 7, 8])

>>> arr3 = np.array([0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,])
>>> arr3[arr3==1]
array([1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值