【问题标题】:Converting numpy array of size 2 to 3将大小为 2 的 numpy 数组转换为 3
【发布时间】:2020-12-25 07:03:25
【问题描述】:

假设我有一个大小为 2 的 each 数组

Arr1 =([[-4, 1],
       [-3,  1],
       [-2,  1],
       [ 2,  1],
       [ 3,  1],
       [ 4,  1]])

如何向每个数组添加/附加第三个元素以获取新数组/输出为:

New_Arr1=([[-4,  1, 0],
           [-3,  1, 0],
           [-2,  1, 0],
           [ 2,  1, 0],
           [ 3,  1, 0],
           [ 4,  1, 0]]) ?

非常感谢, 山姆

【问题讨论】:

    标签: python arrays numpy append numpy-ndarray


    【解决方案1】:

    要将 0 附加到所有子列表,请执行以下操作:

    for lst in Arr1:
        lst.append(0)
    

    (请注意,在Arr1 的表达式中,外括号无效。您所拥有的是列表列表。)

    请注意,这是对Arr1 的就地更改。如果您想让它保持不变并创建一个完全独立的新列表列表,那么您在另一个答案中有它,我不会重复它,除了提到 Azro 答案中的语法假定 Python 3(您应该是using) 但如果出于任何原因您使用的是 Python 2,请改用

    new_Arr1 = [lst + [0] for lst in Arr1]
    

    更新:我看到你已经标记了 numpy,所以也许你实际上有一个 numpy 数组,尽管这个问题并不明确。

    如果是这样,您可以通过以下方式创建一个(新的、单独的)扩展数组:

    New_Arr1 = np.append(Arr1, np.zeros((Arr1.shape[0], 1), dtype=Arr1.dtype), axis=1)
    

    (虽然这当然不排除有一些更简单的方法)。

    【讨论】:

    • 你明白了,它是一个 numpy 数组。这解决了查询。谢谢阿兰尼
    • @Sam 一个 numpy 爱好者完全有可能会出现并提供一个更简单的解决方案,请注意......在 numpy 中似乎有很多方法可以做事。
    【解决方案2】:

    您可以通过列表推导轻松做到这一点,为每个数组创建一个包含其值的新数组,以及 0

    new_values = [[*val, 0] for val in values]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-18
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多