python花式索引得到位置_图解Numpy花式索引及广播

花式索引

切片

import numpy as np

# 切片

a = np.arange(10)

print("a:{}".format(a))

print("a[2:7:2]结果:{}".format(a[2:7:2]))

结果:

a:[0 1 2 3 4 5 6 7 8 9]

a[2:7:2]结果:[2 4 6]

解析:

1.索引范围是2到7(不包含7)

image.png

2.切片步长是2

image.png

3.最终结果:

image.png

import numpy as np

# 切片

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = a[1:3, 0:2]

print("a:{}".format(a))

print("b:{}".format(b))

结果:

a:[[1 2 3]

[4 5 6]

[7 8 9]]

b:[[4 5]

[7 8]]

解析:

image.png

索引

import numpy as np

# 索引

a = np.arange(10, 20)

print("a:{}".format(a))

print("a[[1, 3, 6, 8]]结果:{}".format(a[[1, 3, 6, 8]]))

结果:

a:[10 11 12 13 14 15 16 17 18 19]

a[[1, 3, 6, 8]]结果:[11 13 16 18]

解析:

1.逐个索引取数据

image.png

2.最终结果:

image.png

高级索引

import numpy as np

# 高级索引

x = np.array([[1, 2], [3, 4], [5, 6]])

y = x[[0, 2, 0], [0, 1, 1]]

print("x:{}".format(x))

print("y:{}".format(y))

结果:

x:[[1 2]

[3 4]

[5 6]]

y:[1 6 2]

解析:

1.按照索引值定位子元素

image.png

2.在上一步的基础上进一步定位

image.png

3.最终结果:

image.png

import numpy as np

# 高级索引

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

print('我们的数组x:')

print(x)

print('\n')

rows = [[0, 0], [3, 3]]

cols = [[0, 2], [0, 2]]

y = x[rows, cols]

print('这个数组的四个角元素是:')

print(y)

结果:

我们的数组x:

[[ 0 1 2]

[ 3 4 5]

[ 6 7 8]

[ 9 10 11]]

这个数组的四个角元素是:

[[ 0 2]

[ 9 11]]

1.按索引位逐个取值

image.png

2.最终结果:

image.png

广播

import numpy as np

#广播

a = np.array([[0, 0, 0],

[10, 10, 10],

[20, 20, 20],

[30, 30, 30]])

b = np.array([1, 2, 3])

print(a + b)

结果:

[[ 1 2 3]

[11 12 13]

[21 22 23]

[31 32 33]]

解析:

image.png

广播的规则:

1.让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。

2.输出数组的形状是输入数组形状的各个维度上的最大值。

3.如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。

4.当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

简单理解:

对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:

1.数组拥有相同形状。

2.当前维度的值相等。

3.当前维度的值有一个是 1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值