12.1 Numpy数组的索引

29 篇文章 0 订阅
29 篇文章 0 订阅

12.1 Numpy数组的索引

"""
12.1 数组的索引
"""
import numpy as np

x = np.arange(1, 13).reshape(3, 4)
"""
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
"""
print(x)

# 普通获取元素的方式
print(x[1][2]) # 7

# 也可以这样获取元素
print(x[1, 2]) # 7

# 获取一行
print(x[1]) # [5 6 7 8]

# 获取一列
print(x[:, 1]) # [ 2  6 10]

"""
通过整数数组进行索引
当要选取的元素不连续时,可以提供一个索引数组来选择(或者修改)对应索引位置的元素
说明:
1. 通过整数数组索引,返回的是原数组的拷贝,而不是视图
2. 可以提供多个一维数组的索引,此时会将每个数组的对应位置元素作为索引,返回对应的元素
"""
x = np.arange(30).reshape(5, 6)
print(x)
"""
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]]
"""
# 返回数组的第1行、第3行、第4行
index = [1, 3, 4]
print(x[index])
"""
[[ 6  7  8  9 10 11]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]]
"""

"""
通过整数数组,进行索引(提取元素),返回的是原数组数据的拷贝,而不是视图。(这一点与切片不同)
"""
# 返回数组的第1行、第3行
y = x[[1, 3]]
print(y)
"""
[[ 6  7  8  9 10 11]
 [18 19 20 21 22 23]]
"""

"""
提供多个一维数组,提取(获取)元素
每个一维数组指定相应维度的索引(坐标)
"""
"""
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]]
"""
print(x[[0, 1, 2], [2, 3, 4]]) # [ 2  9 16]

"""
通过布尔数组进行索引:
我们可以提供一个布尔类型的数组,然后通过该数组来对另一个数组进行索引(元素选取)。
索引的原则为:如果为True,则选取对应位置的元素,否则不选取。
通过布尔类型的数组进行索引是常见且实用的操作,我们通常用来进行元素选择(或过滤)操作。如:
1. 选择一个公司所有年龄大于15的年龄
2. 选择两个数组中对应位置相同的元素
3. 将所有大于100的值设置为100

说明:
1. 用于索引的布尔数组通常通过现有数组计算得出
2. 可以通过~对条件进行取反操作(不能使用not)
3. 当存在多个条件时,可以使用&,|符号(不能使用and与or)。同时,每个条件需要使用()进行扩起
"""
x = np.arange(10, 30).reshape(4, 5)
print(x)
"""
[[10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]
 [25 26 27 28 29]]
"""

# 使用布尔类型的数组来选取值
print(x[[True, False, True, False]])
"""
[[10 11 12 13 14]
 [20 21 22 23 24]]
"""

# 根据条件过滤掉相应的元素,对应的返回值为布尔值
print(x > 15)
"""
[[False False False False False]
 [False  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
"""
# 根据条件过滤掉相应的元素
print(x[x > 15]) # [16 17 18 19 20 21 22 23 24 25 26 27 28 29]

# 取出a和b中相同的元素
a = np.array([1, 3, 9, 10])
b = np.array([1, 8, 6, 10])
print(a[[True, False, True, False]]) # [1 9]
print(a[a == b]) # [ 1 10]

# 选择满足指定条件的值
a = np.array([102, -3, 234, 120, 50])
print(a[a > 100]) # [102 234 120]

"""
在numpy中,实现python中的and,or,与not
and -> &
or -> |
not -> ~
注意:再进行条件组合的时候,每个条件使用小括号扩起。(不用再看运算符优先级了,此处不再适用)
"""
print(a) # [102  -3 234 120  50]
a[(a > 100) & (a < 150)] = 100
print(a) # [100  -3 234 100  50]

b = a[~(a > 100)]
print(b) # [100  -3 100  50]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soyisou

您的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值