numpy数组形状变化扩展

问题描述 投票:0回答:1

我想知道如何将一个数组,如。

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
a.shape
(3,3)

改成:

a = np.array([[[1,255,255],[2,255,255],[3,255,255]],
[4,255,255],[5,255,255],[6,255,255]],
[7,255,255],[8,255,255],[9,255,255]]])
a.shape
(3,3,3)

基本上是把一个单元素 1 变成 [1, 255, 255]

我已经玩过了 reshape 但我似乎无法在没有慢速的情况下实现这个逻辑。for 循环。

python arrays numpy shapes
1个回答
4
投票

一种解决方案是创建一个新的所需形状的数组,并在数组中填入 255使用 np.full的值来填充每个内层列表的索引0值,然后用 a.

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.full((3, 3, 3), 255)
b[:, :, 0] = a

产出为

array([[[  1, 255, 255],
        [  2, 255, 255],
        [  3, 255, 255]],
       [[  4, 255, 255],
        [  5, 255, 255],
        [  6, 255, 255]],
       [[  7, 255, 255],
        [  8, 255, 255],
        [  9, 255, 255]]])
© www.soinside.com 2019 - 2024. All rights reserved.