numpy取值大全

欢迎

在NumPy中,可以使用切片、整数数组索引和布尔数组索引来进行取值操作。

切片操作

可以使用类似于Python中的切片操作来获取数组的子集。例如,对于一个一维数组a,可以使用a[start🔚step]来获取从start位置开始到end位置之前的每step个元素。如果省略了start,则默认从数组的开头开始;如果省略了end,则默认到数组的末尾结束;如果省略了step,则默认为1。

示例:

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[1:4]) # 输出 [2 3 4]
print(a[:3]) # 输出 [1 2 3]
print(a[::2]) # 输出 [1 3 5]

对于二维数组,可以使用a[start🔚step, start🔚step]来获取一个子数组,其中第一个切片用于选择行,第二个切片用于选择列。

示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[:2, :2]) # 输出 [[1 2]
# [4 5]]
print(a[::2, ::2]) # 输出 [[1 3]
# [7 9]]

整数数组索引:

可以使用整数数组索引来获取数组中指定位置的元素。例如,对于一个一维数组a,可以使用a[[1, 3, 4]]来获取第1、3和4个元素。

示例:

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[[1, 3, 4]]) # 输出 [2 4 5]

对于二维数组,可以使用整数数组索引来选择每行中的一个元素,返回一个一维数组。例如,对于一个二维数组a,可以使用a[[0, 1, 2], [0, 1, 0]]来获取第0行第0列、第1行第1列和第2行第0列的元素。

示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[[0, 1, 2], [0, 1, 0]]) # 输出 [1 5 7]

布尔数组索引:

可以使用布尔数组索引来获取数组中与布尔数组中相应位置为True的元素。例如,对于一个一维数组a,可以使用a[a > 2]来获取所有大于2的元素。

示例:

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[a > 2]) # 输出 [3 4 5]

对于二维数组,可以使用布尔数组索引来选择每行或每列中与布尔数组相应位置为True的元素,返回一个一维数组或二维数组。例如,对于一个二维数组a,可以使用a[a > 2]来获取所有大于2的元素。

示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[a > 2]) # 输出 [3 4 5 6 7 8 9]

布尔数组索引

同时也可以使用布尔数组索引来选择每行或每列中与布尔数组相应位置为True的元素,返回一个二维数组。例如,对于一个二维数组a,可以使用a[[True, False, True], :]来获取第0和第2行的所有元素。

示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[[True, False, True], :]) # 输出 [[1 2 3]
# [7 8 9]]

需要注意的是,在使用布尔数组索引时,布尔数组的形状必须与被索引的数组的形状相同或者能够广播到相同的形状。

除了以上介绍的基本取值操作,NumPy还提供了其他高级的取值操作,包括花式索引和数据结构化取值。

花式索引:

花式索引是指使用整数数组或布尔数组进行取值操作,可以同时选择多个不连续的元素。例如,对于一个一维数组a,可以使用a[[1, 3, 4]]来获取第1、3和4个元素。

示例:

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[[1, 3, 4]]) # 输出 [2 4 5]

对于二维数组,可以使用花式索引来选择任意位置的元素。例如,对于一个二维数组a,可以使用a[[0, 2], [1, 2]]来获取第0行第1列和第2行第2列的元素。

示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[[0, 2], [1, 2]]) # 输出 [2 9]

需要注意的是,使用整数数组进行花式索引时,整数数组的形状可以与被索引的数组的形状不同,但是必须满足广播规则;使用布尔数组进行花式索引时,布尔数组的形状必须与被索引的数组的形状相同或者能够广播到相同的形状。

数据结构化取值:

对于结构化数组,可以使用字段名称和索引组成的元组来进行取值操作。例如,对于一个结构化数组a,可以使用a[‘name’]来获取所有的name字段的值,使用a[1][‘name’]来获取第1个元素的name字段的值。

示例:

import numpy as np
a = np.array([('Alice', 25), ('Bob', 30), ('Charlie', 35)], dtype=[('name', 'U10'), ('age', 'i4')])
print(a['name']) # 输出 ['Alice' 'Bob' 'Charlie']
print(a[1]['name']) # 输出 'Bob'

需要注意的是,在定义结构化数组时,需要指定每个字段的名称和数据类型。在取值操作时,使用字段名称或索引组成的元组来选择相应的字段,可以同时选择多个字段,返回一个新的结构化数组。

以上就是NumPy中常用的取值操作,通过这些操作,可以方便地选择数组中的元素或子数组,进行数据处理和分析。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值