掌握数组索引:Python数据分析的基石

目录

一、引言

二、访问数组元素

1.访问向量

2.访问矩阵

三、NumPy数组与索引

1. 数组索引

​编辑

2. 一维数组和多维数组索引

2.1 一维数组索引

2.2 二维数组索引

四、pandas的Series与DataFrame索引

1.Series索引

2.DataFrame索引

五、数组切片

1. 最基础的数组切片:

示例代码:

​编辑

2. 切片中包括省略号

单个省略号示例:

多个省略号示例:

总结



一、引言

        在Python数据分析中,数组是一种非常重要的数据结构,它允许我们高效地存储、检索和处理数据。Python的NumPy库和pandas库为我们提供了强大的数组处理能力,特别是通过索引访问数组元素的功能。

二、访问数组元素

        与Python列表一致,访问numpy数组元素时使用中括号,索引由0开始。

1.访问向量

import numpy as np
# 创建向量
arr1 = np.arange( 1,10 )
print(arr1)#输出[1 2 3 4 5 6 7 8 9]
 
print(arr1[3]) # 正着访问
#输出4
 
print(arr1[-1]) # 倒着访问
#输出9
 
arr1[3] = 100;# 修改数组元素
print(arr1)
#输出[  1   2   3 100   5   6   7   8   9]

2.访问矩阵

import numpy as np
# 创建矩阵
arr2 = np.array([[1,2,3],[4,5,6]])
print(arr2)
#输出[[1 2 3]
#    [4 5 6]]
 
# 访问元素
print(arr2[0,2]) #0行2列
#输出3
print(arr2[1,-2])#2行-2列(2行2列)
#输出5
 
# 修改元素
arr2[1,1] = 100.9
print(arr2)
#输出[[  1   2   3]
#    [  4 100   6]]

三、NumPy数组与索引

        NumPy是Python中一个用于数值计算的库,它提供了高性能的多维数组对象。NumPy数组是固定大小的同类型元素的集合,可以通过索引来访问和修改其元素。

1. 数组索引

        在NumPy中,您可以使用索引来访问数组中的元素。索引从0开始,使用[]进行索引操作,因此第一个元素的索引是0,第二个元素的索引是1,依此类推。以下是一些示例:

示例1

示例2 使用负索引从数组末尾开始访问元素

示例3 使用slice函数进行指定范围和step索引

2. 一维数组和多维数组索引

2.1 一维数组索引

        一维数组是最简单的数组形式,用于存储一系列相同类型的数据。在NumPy中,我们可以使用整数索引来访问一维数组中的元素。

import numpy as np  
  
# 创建一个一维数组  
arr_1d = np.array([10, 20, 30, 40, 50])  
  
# 访问单个元素  
print("第一个元素:", arr_1d[0])  # 输出: 第一个元素: 10  
  
# 访问多个元素(切片)  
print("索引1到3的元素:", arr_1d[1:4])  # 输出: 索引1到3的元素: [20 30 40]  
  
# 修改数组中的元素  
arr_1d[2] = 35  
print("修改后的数组:", arr_1d)  # 输出: 修改后的数组: [10 20 35 40 50]

2.2 二维数组索引

        二维数组可以看作是表格或矩阵,它有两个维度:行和列。在NumPy中,我们可以使用两个索引(行索引和列索引)来访问二维数组中的元素。

# 创建一个二维数组(也称为矩阵)  
arr_2d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])  
  
# 访问单个元素(通过行索引和列索引)  
print("第一行第二列的元素:", arr_2d[0, 1])  # 输出: 第一行第二列的元素: 20  
  
# 访问多行多列(通过切片)  
print("前两行所有列的元素:")  
print(arr_2d[:2, :])  # 输出前两行所有列的元素  
# 输出:  
# [[10 20 30]  
#  [40 50 60]]  
  
# 修改二维数组中的元素  
arr_2d[1, 1] = 55  
print("修改后的数组:")  
print(arr_2d)  # 输出修改后的数组  
# 输出:  
# [[10 20 30]  
#  [40 55 60]  
#  [70 80 90]]

四、pandas的Series与DataFrame索引

        pandas是一个强大的数据分析库,它提供了Series和DataFrame两种主要的数据结构。Series是一个一维数组对象,而DataFrame则是一个二维的表格型数据结构。

1.Series索引

        Series类似于一维数组,但有一个与之相关的索引。这个索引可以是整数,也可以是其他数据类型(如字符串)。

import pandas as pd  
  
# 创建一个pandas Series  
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])  
  
# 访问单个元素  
print("索引为'b'的元素:", s['b'])  # 输出: 索引为'b'的元素: 20  
  
# 修改Series中的元素  
s['c'] = 35  
print("修改后的Series:", s)  
# 输出: 修改后的Series:  
# a    10  
# b    20  
# c    35  
# d    40  
# e    50  
# dtype: int64

2.DataFrame索引

        DataFrame既有行索引也有列索引,可以通过行标签和列标签来访问数据。

# 创建一个pandas DataFrame  
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}  
df = pd.DataFrame(data)  
  
# 访问单个元素(通过行标签和列标签)  
print("第一行'B'列的元素:", df.loc['0', 'B'])

五、数组切片

        NumPy是一个强大的Python库,用于科学计算和数据分析,它提供了用于处理多维数组的功能。数组切片是一种在NumPy中常用的技术,用于获取数组的子集。

1. 最基础的数组切片:

NumPy数组切片的基本格式如下:
array[start:stop:step]

1.start:起始索引(包含在切片中),默认为0。
2.stop:终止索引(不包含在切片中)。
3.step:步长,用于控制切片的间隔,可以为负数。

那么多于多维数组,之间使用逗号隔开

维度1切片,维度2切片...
示例代码:

下面是一些示例代码,演示如何使用NumPy数组切片:

2. 切片中包括省略号

基本格式:
        NumPy数组切片的"…"(省略号)是一种特殊的切片操作,通常用于处理多维数组,其中维度较多,但只想在其中的一个或多个维度上执行切片操作。省略号可以用来代替一系列冒号(:)来表示多个维度的切片。
格式:
array[…, slice1, slice2, …]

省略号可以用于代替任意数量的冒号,以便对多维数组进行切片。

单个省略号示例:
import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

# 使用单个省略号切片第一个维度
slice1 = arr[...]
print(slice1)
# 输出:
# [[[ 1  2  3]
#   [ 4  5  6]]
#
#  [[ 7  8  9]
#   [10 11 12]]


# 使用单个省略号切片第二个维度
slice2 = arr[:, ...]
print(slice2)
# 输出:
# [[[ 1  2  3]
#   [ 4  5  6]]
#
#  [[ 7  8  9]
#   [10 11 12]]
多个省略号示例:
import numpy as np

arr = np.random.rand(2, 3, 4, 5)

# 使用多个省略号同时切片多个维度
slice3 = arr[..., 1, 2, ...]
print(slice3.shape)
# 输出:(2, 3)

# 使用多个省略号和其他切片
slice4 = arr[:, ..., 1:4, 2]
print(slice4.shape)
# 输出:(2, 3, 3)

总结

       索引在数据分析中扮演着至关重要的角色。它允许我们快速定位到数据集中的特定部分,从而进行精确的数据操作和分析。无论是简单的数据检索,还是复杂的数据筛选和转换,都离不开索引的支持。

        通过掌握NumPy和pandas中数组的索引访问技术,我们可以更加高效地进行数据分析工作。无论是处理一维数据还是多维数据,都能够通过索引来轻松地访问、修改和操作数据。在实际应用中,我们应该根据数据的具体结构和需求来选择合适的索引访问方式,以实现高效、准确的数据分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值