NumPy数组形状更改/扩展

4

我正在尝试弄清如何更改这样的数组:

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

into:

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循环的情况下完成此操作的逻辑。

1个回答

4

一种解决方案是使用np.full创建一个所需形状的新数组,填充255,然后将每个内部列表的索引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]]])

1
非常准确,非常感谢您的快速回复! - user3060835

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接