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 数组操作 20
NumPy 提供了多种数组操作功能,其中包括分割数组。`numpy.split` 可以将数组沿指定轴分为多个子数组。使用格式为 `numpy.split(ary, indices_or_sections, axis)`,其中 `ary` 是待分割的数组,`indices_or_sections` 指定分割方式,`axis` 设定分割方向,默认为 0(水平)。另有 `hsplit` 和 `vsplit` 专门用于水平和垂直分割。
28 4
|
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 数组操作 30
展示了如何使用`numpy.unique`去除数组中的重复值,并获取额外信息如索引和计数。示例中,数组`a`的重复值被去除,打印出唯一值及其在原数组中的首次出现索引、对应原值的索引以及各唯一元素的出现次数。这有助于数据分析时简化数据集。
32 2
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 12
这段 NumPy 教程介绍了数组操作,包括修改形状、翻转、维度调整、连接与分割等。特别聚焦于改变数组维度的功能,如 `broadcast_to` 可以将数组扩展至新的形状,返回一个只读视图,如果形状不符合广播规则,则会引发 `ValueError`。示例展示了如何将一个形状为 `(1,4)` 的数组广播为 `(4,4)` 形状。
39 7
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 27
Numpy数组操作教程27,涵盖数组的修改、翻转、连接、分割及元素增删。重点介绍`numpy.append`函数,用于向数组末尾添加元素。参数`arr`为原数组,`values`为待添加值,需与`arr`形状匹配(除添加轴外),`axis`定义添加方向,默认为None时返回一维数组。示例展示了不同轴向的添加效果。
28 1
|
3月前
|
数据处理 Python
NumPy 教程 之 Numpy 数组操作 23
本教程介绍Numpy数组操作,重点讲解如何使用`numpy.hsplit`函数水平分割数组。通过随机生成一个2x6数组,演示了如何将其均匀分割成三个2x2或2x3的子数组。`numpy.hsplit`允许指定分割后的子数组数量,便于数据处理和分析。
21 1
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 13
本教程介绍 NumPy 中的数组操作,覆盖了修改数组形状、翻转、连接与分割等技巧。重点讲解了如何使用 `numpy.expand_dims` 函数在指定位置新增轴以扩展数组维度,通过示例展示了 `expand_dims` 的用法及其对数组形状的影响。
30 4
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 17
NumPy 提供多种数组操作功能,包括修改形状、翻转、调整维度、连接与分割数组及元素的增删。其中,`numpy.stack()`用于沿新轴连接数组序列。示例中,有两个数组`a`和`b`,通过`np.stack((a,b),0)`沿第0轴堆叠,生成的新数组在原有基础上增加了一个维度;而`np.stack((a,b),1)`则沿第1轴堆叠,使得每个数组元素都配对堆叠。
26 1
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 10
本教程详细介绍了Numpy中的数组操作,主要包括:修改数组形状如`reshape`、`flatten`等;修改数组维度如`expand_dims`和`squeeze`等;此外还涉及翻转、连接及分割数组,以及数组元素的添加与删除等功能,帮助读者全面掌握Numpy数组的各种实用操作技巧。
28 4
|
3月前
|
Python
NumPy 教程 之 Numpy 数组操作 7
本教程介绍Numpy数组操作,涵盖形状修改、翻转、维度调整、连接与分割及元素增删等功能。重点讲解了不改变数据条件下修改数组形状的方法,包括`reshape`函数的应用,以及`flat`、`flatten`和`ravel`的区别与联系。示例中展示了如何利用`ndarray.T`进行数组转置,简洁明了地实现了二维数组的行列互换。
31 5