NumPy 教程 之 Numpy 数组操作 11

简介: 本教程介绍Numpy中的数组操作,重点在于修改数组维度的方法,包括广播(`broadcast`)、扩展(`expand_dims`)和压缩(`squeeze`)维度等。通过实例展示了如何使用`numpy.broadcast`模拟广播机制,以及如何手动实现两个数组间的广播相加操作,并得到与Numpy内置广播相同的结果。

NumPy 教程 之 Numpy 数组操作 11

Numpy 数组操作

Numpy 中包含了一些函数用于处理数组,大概可分为以下几类:

修改数组形状
翻转数组
修改数组维度
连接数组
分割数组
数组元素的添加与删除

修改数组维度

维度 描述
broadcast 产生模仿广播的对象
broadcast_to 将数组广播到新形状
expand_dims 扩展数组的形状
squeeze 从数组的形状中删除一维条目

numpy.broadcast

numpy.broadcast 用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。

该函数使用两个数组作为输入参数,如下实例:

实例

import numpy as np

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

对 y 广播 x

b = np.broadcast(x,y)

它拥有 iterator 属性,基于自身组件的迭代器元组

print ('对 y 广播 x:')
r,c = b.iters

Python3.x 为 next(context) ,Python2.x 为 context.next()

print (next(r), next(c))
print (next(r), next(c))
print ('\n')

shape 属性返回广播对象的形状

print ('广播对象的形状:')
print (b.shape)
print ('\n')

手动使用 broadcast 将 x 与 y 相加

b = np.broadcast(x,y)
c = np.empty(b.shape)

print ('手动使用 broadcast 将 x 与 y 相加:')
print (c.shape)
print ('\n')
c.flat = [u + v for (u,v) in b]

print ('调用 flat 函数:')
print (c)
print ('\n')

获得了和 NumPy 内建的广播支持相同的结果

print ('x 与 y 的和:')
print (x + y)

输出结果为:

对 y 广播 x:
1 4
1 5

广播对象的形状:
(3, 3)

手动使用 broadcast 将 x 与 y 相加:
(3, 3)

调用 flat 函数:
[[5. 6. 7.]
[6. 7. 8.]
[7. 8. 9.]]

x 与 y 的和:
[[5 6 7]
[6 7 8]
[7 8 9]]

目录
相关文章
|
3月前
|
索引 Python
NumPy 教程 之 Numpy 数组操作 28
NumPy 提供多种数组操作功能,包括修改形状、翻转、连接和分割等。本教程重点介绍元素的添加与删除,如使用 `resize`、`append`、`insert` 和 `delete` 函数。其中 `numpy.insert` 可在指定索引前插入值,支持标量或数组插入。示例展示了不同情况下 `insert` 的使用方法,包括不指定轴时的数组扁平化插入,以及沿特定轴进行广播插入。
36 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 21
Numpy 教程之数组操作21:介绍如何使用 `numpy.split` 分割数组。此函数可按指定位置或等分数将数组分成子数组。参数包括待分割的数组 `ary`、分割点或份数 `indices_or_sections` 及轴向 `axis`。示例展示了将一维数组 `[0 1 2 3 4 5 6 7 8]` 平均分成三份及按 `[4, 7]` 位置分割的方法。
36 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 29
NumPy 提供多种数组操作函数,如修改形状、翻转和连接等。本教程重点介绍元素的添加与删除,包括 `resize`、`append`、`insert` 和 `delete` 函数。`numpy.delete` 用于从数组中删除指定元素,参数包括 `arr`(输入数组)、`obj`(待删元素)和 `axis`(删除轴)。示例展示了如何使用 `numpy.delete` 删除一维和二维数组中的元素。
34 4
|
3月前
|
数据挖掘 索引 Python
NumPy 教程 之 Numpy 数组操作 30
展示了如何使用`numpy.unique`去除数组中的重复值,并获取额外信息如索引和计数。示例中,数组`a`的重复值被去除,打印出唯一值及其在原数组中的首次出现索引、对应原值的索引以及各唯一元素的出现次数。这有助于数据分析时简化数据集。
32 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 26
Numpy教程之数组操作26,介绍如何使用Numpy进行数组元素的添加、删除和调整形状。主要函数包括`resize`、`append`、`insert`、`delete`和`unique`。`resize`用于调整数组大小,若新大小超过原大小,则重复原数组元素以填充新数组。示例中,初始数组`a`被扩展为不同形状的新数组`b`,展示了如何通过`resize`来修改数组的维度和内容。
38 3
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 12
这段 NumPy 教程介绍了数组操作,包括修改形状、翻转、维度调整、连接与分割等。特别聚焦于改变数组维度的功能,如 `broadcast_to` 可以将数组扩展至新的形状,返回一个只读视图,如果形状不符合广播规则,则会引发 `ValueError`。示例展示了如何将一个形状为 `(1,4)` 的数组广播为 `(4,4)` 形状。
39 7
|
3月前
|
数据处理 Python
NumPy 教程 之 Numpy 数组操作 23
本教程介绍Numpy数组操作,重点讲解如何使用`numpy.hsplit`函数水平分割数组。通过随机生成一个2x6数组,演示了如何将其均匀分割成三个2x2或2x3的子数组。`numpy.hsplit`允许指定分割后的子数组数量,便于数据处理和分析。
21 1
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 22
本教程介绍NumPy中分割数组的方法。`numpy.split`可沿指定轴将数组分为子数组,参数包括待分割数组、切分数或位置及轴向。示例展示了如何使用`numpy.split`和`numpy.hsplit`沿不同轴向分割一个4x4数组。`numpy.split`在默认轴0方向分割,而通过设定`axis=1`实现水平分割;`numpy.hsplit`则专门用于水平分割。
33 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 19
本教程介绍Numpy数组操作,涵盖数组形状修改、翻转、维度调整、连接与分割以及元素增删等关键技能。重点讲解`numpy.vstack`函数,该函数可将多个数组沿垂直方向堆叠。示例展示了如何使用`vstack`将两个2D数组堆叠成一个更大的数组,适用于数据整合场景。
32 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 17
NumPy 提供多种数组操作功能,包括修改形状、翻转、调整维度、连接与分割数组及元素的增删。其中,`numpy.stack()`用于沿新轴连接数组序列。示例中,有两个数组`a`和`b`,通过`np.stack((a,b),0)`沿第0轴堆叠,生成的新数组在原有基础上增加了一个维度;而`np.stack((a,b),1)`则沿第1轴堆叠,使得每个数组元素都配对堆叠。
26 1