【问题标题】:Adding a number to each index of an array and creating a list of new arrays向数组的每个索引添加一个数字并创建一个新数组列表
【发布时间】:2021-04-19 12:24:32
【问题描述】:

我有一个 numpy 数组 A = np.array([1,2,3])。我想将1 添加到该数组的每个元素中,并分别返回每个添加的数组:

我想要的输出是:

list1 = [[2,2,3][1,3,3][1,2,4]]

我已尝试使用np.ufunc 方法添加我的数组,并使用普通列表,但两种方法都累积添加数组/列表:

In[1]:    list1 = []
          A = np.array([1,2,3])
          for i in range(len(A)):
              np.add.at(A, [i,], 1)
              list1.append(A)
              print(list1)

Out[1]:   [array([2, 2, 3])]
          [array([2, 3, 3]), array([2, 3, 3])]
          [array([2, 3, 4]), array([2, 3, 4]), array([2, 3, 4])]

这似乎需要在for 循环之外完成,但我不确定是什么。 我哪里错了?

【问题讨论】:

  • 您能说明一下您需要什么帮助吗?我不太确定我明白出了什么问题......
  • 我想获取数组 [1,2,3] 并将 1 添加到该数组的每个索引并将它们分别存储在一个新列表中。所以我想要列表 1 = [[2,2,3],[1,3,3],[1,2,4]]。但我得到 list1 = [[2,3,4],[2,3,4],[2,3,4]] ,每次都添加数组
  • 哦,好的。您将其附加到一个新列表中。您是否尝试过直接打印 A 而不是将其附加到列表并打印列表?
  • 你说“返回一个数组”,然后称它为list1,显示一些无效的东西,现在说“在一个新列表中”。你能下定决心吗?

标签: python arrays list


【解决方案1】:
>>> A + np.eye(A.size)
array([[2., 2., 3.],
       [1., 3., 3.],
       [1., 2., 4.]])

【讨论】:

    【解决方案2】:

    遍历列表。

    a = [1,2,3]
    out = []
    for c, n in enumerate(a):
        newlst = []
        for c2, v in enumerate(a):
            if not c2 == c:
                newlst.append(v)
            else:
                newlst.append(v+1)
        out.append(newlst)
    print(out)
    

    输出:

    [[2, 2, 3], [1, 3, 3], [1, 2, 4]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2019-04-17
      • 2022-07-29
      • 2016-09-16
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多