python - 将 (n,m) 形 numpy 数组转换为 (n,m,1,1) 形数组

标签 python numpy

我的起点是一个 pandas 数据框,我将其转换为一个 numpy 数组:

> df = pd.DataFrame({"a":[1,2,3,4],"b":[4,5,6,7],"c":[7,8,9,10]})
> arr = df.as_matrix()

数组现在是形状为 (4,3) 的二维:

> arr
array([[ 1,  4,  7],
       [ 2,  5,  8],
       [ 3,  6,  9],
       [ 4,  7, 10]])

我想做的是通过有效映射每个奇异元素(如 f.x),将 arr 转换为其 4 维和 (4,3,1,1) 形状的等价物。 5[[5]]

新的 arr 将是:

array([[ [[1]],  [[4]],  [[7]]  ],
       [ [[2]],  [[5]],  [[8]]  ],
       [ [[3]],  [[6]],  [[9]]  ],
       [ [[4]],  [[7]],  [[10]] ]])

我该如何优雅快速地做到这一点?

最佳答案

执行 arr[:, :, None, None] 添加两个额外的轴。这是一个例子:

In [5]: arr[:, :, None, None].shape
Out[5]: (4, 3, 1, 1)
indexing中的

Nonenp.newaxis的同义词,它选择数据并添加一个新的轴。很多人更愿意把上面的写成

arr[:, :, np.newaxis, np.newaxis]

出于易读性原因

关于python - 将 (n,m) 形 numpy 数组转换为 (n,m,1,1) 形数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051959/

相关文章:

python - Google Admin SDK 错误资源未找到 : domain when trying to list existing users

python - Python 中的质数生成器

python - 如何创建一个具有大量属性而不重复代码的类?

python - 重建索引以将缺失日期添加到 Pandas 数据框

python - 使用 numpy 广播/矢量化从其他数组构建新数组

python - 绘制向量函数的最 Pythonic 方法

python - 使用python删除矩阵中的相应行/列

python - 带日期限制的总信息

numpy - Numpy 文档中提到的 "sum product"是什么意思?

python - 如何在 Python 中使用 x^2 进行(空中飞人)集成?