【问题标题】:How to append a new element into 3D numpy array in a loop?如何在循环中将新元素附加到 3D numpy 数组中?
【发布时间】:2021-09-16 15:29:57
【问题描述】:

我想尝试在循环 python 中向 3D numpy 数组中添加一个新元素,但它不适用于插入或追加。

import numpy as np
a = np.array([[[24,24,3],[25,28,1],[13,34,1],[3,4,5]]])
a = np.insert(a,3,0,axis = 2)
print(a)
[[[24 24  3  0]
 [25 28  1  0]
 [13 34  1  0]
 [ 3  4  5  0]]]

我不想在每个数组中插入 0,而是使用 for 循环

for i in range(4):
 .......

结果应该是这样的:

[[[24 24  3  0]
 [25 28  1  1]
 [13 34  1  2]
 [ 3  4  5  3]]]

【问题讨论】:

    标签: python numpy multidimensional-array insert append


    【解决方案1】:

    你不能零敲碎打。而是考虑一次连接整个列或平面的术语。数组必须保持“矩形” - 没有粗糙。

    In [276]: a = np.array([[[24,24,3],[25,28,1],[13,34,1],[3,4,5]]])
    In [277]: a.shape
    Out[277]: (1, 4, 3)
    In [278]: x = np.arange(4).reshape(1,4,1)
    In [279]: x
    Out[279]: 
    array([[[0],
            [1],
            [2],
            [3]]])
    In [280]: arr1 =np.concatenate((a,x), axis=2)
    In [281]: arr1.shape
    Out[281]: (1, 4, 4)
    In [282]: arr1
    Out[282]: 
    array([[[24, 24,  3,  0],
            [25, 28,  1,  1],
            [13, 34,  1,  2],
            [ 3,  4,  5,  3]]])
    

    或者

    In [290]: arr2=np.zeros((1,4,4),int)
    In [291]: arr2[:,:,:3]=a
         ...: arr2
    Out[291]: 
    array([[[24, 24,  3,  0],
            [25, 28,  1,  0],
            [13, 34,  1,  0],
            [ 3,  4,  5,  0]]])
    In [292]: for i in range(4):
         ...:     arr2[:,i,3]=i
         ...: 
    In [293]: arr2
    Out[293]: 
    array([[[24, 24,  3,  0],
            [25, 28,  1,  1],
            [13, 34,  1,  2],
            [ 3,  4,  5,  3]]])
    

    【讨论】:

    • 第二种解决方案帮助了我。非常感谢。
    猜你喜欢
    • 2020-09-14
    • 2019-05-06
    • 2021-04-17
    • 2018-04-11
    • 2020-03-13
    • 2020-07-07
    • 2015-03-31
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多