美文网首页
图解Numpy花式索引及广播

图解Numpy花式索引及广播

作者: 梦想实现家_Z | 来源:发表于2019-08-25 13:29 被阅读0次

花式索引

切片

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。

相关文章

  • 图解Numpy花式索引及广播

    花式索引 切片 结果: 解析:1.索引范围是2到7(不包含7) 结果: 解析: 索引 结果: 解析:1.逐个索引取...

  • NumPy 高级索引和数组概念

    NumPy 高级索引和数组概念 调整图像尺寸 创建视图及副本 翻转图像 花式索引 将位置列表用于索引 布尔索引 分...

  • Python Data Science, NumPy 2

    这篇文章延续Python Data Science, NumPy 1,介绍广播、高级索引以及数组排序。 广播 广播...

  • Numpy-花式索引

    学Numpy遇到一问题:如何一次性获取下列红框中的数据 解决方案:如果不降维,用numpy无法一次性获取降维的解决...

  • Numpy布尔索引和花式索引

    Numpy布尔索引和花式索引 布尔索引:指的是一个由布尔值组成的数组可以作为一个数组的索引,返回的数据为True值...

  • Numpy的布尔索引与花式索引

    目录布尔索引花式索引 (Fancy Indexing)二者的联系? 申明:本文中提到的数组就是特指numpy的数据...

  • NumPy 数组使用

    NumPy 数组使用 向量化 通用函数(ufunc) 广播和调整形状 向量堆叠 布尔索引 助手函数

  • numpy基础(二)

    numpy 数组索引及切片 一维数组的索引以及切片 在numpy 中一维数组的切片和python中的列表一样。切片...

  • Numpy中花式索引和shape用法

    原文转载自我的博客benym.cn 总结一下最近学习中容易出现问题的地方❗️ ❗️ ❗️ 代码 运行结果

  • python:numpy的索引和切片(2)

    接一章 python:numpy的索引和切片(1)python:numpy的索引和切片(1) 1、numpy中数值...

网友评论

      本文标题:图解Numpy花式索引及广播

      本文链接:https://www.haomeiwen.com/subject/aanqectx.html