python - 改变 ndarray 的形状

标签 python numpy

import numpy as np
​
image1 = np.zeros((120, 120))
image2 = np.zeros((120, 120))
image3 = np.zeros((120, 120))
​
pack1 = np.array([image1,image2,image3])
pack2 = np.array([image1,image2,image3])
​
result = np.array([pack1,pack2])

print result.shape

结果是: (2, 3, 120, 120)

问题:如何在不混合的情况下使用相同的数据创建形状为 (2,120,120,3) 的数组?

最佳答案

使用np.rollaxis将单个轴移动(确定,滚动)到指定位置:

>>> a.shape
(2, 3, 11, 11)
>>> np.rollaxis(a, 0, 4).shape
(3, 11, 11, 2)

这里的语法是“滚动第 0 个轴,使其成为新数组中的第 4 个”。

请注意,rollaxis 创建了一个 View 并且没有复制:

>>> np.rollaxis(a, 0, 4).base is a
True

另一种(通常更易读)的方法是使用 np.transpose 接受轴放置位置的元组这一事实。观察:

>>> np.transpose(a, (1, 2, 3, 0)).shape
(3, 11, 11, 2)
>>> np.transpose(a, (1, 2, 3, 0)).base is a
True

这里的语法是“置换轴,使原始数组中的第 0 轴成为新数组中的第 4 轴”

关于python - 改变 ndarray 的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41022182/

相关文章:

python - Numpy 空列表类型推断

python - Python中的三角波形数组

python - 用 Boost Python 包装 C++ 函数——numpy 数组类型

python - Python中的模块名称冲突,如何解决?

Python 装饰器强制显式传递参数

python - 当网站部署在 Google 应用引擎上时 TemplateNotFound : templates/HomePage. html 错误,但网站在本地主机中运行时运行正常

python - 查找数据帧字符串中单词的交集 - 仅整个单词

python - socket.recv() 什么时候引发异常?

python - 获取 Pandas 中每行 N 个最大/最小值的列名

python - SymPy rref() 返回奇异矩阵的单位矩阵