【问题标题】:How to replace column in list of lists in python [closed]如何替换python列表列表中的列[关闭]
【发布时间】:2023-04-11 04:31:01
【问题描述】:

我有一个类似列表的列表

l1=[[1 2]
    [3 4]
    [5 6]]

还有另一个列表

l2=[[5]
    [3]
    [9]]

我想用l2 替换l1 第二列中的元素,比如

l1=[[1 5]
    [3 3]
    [5 9]]  

我尝试像l1[:,1]=np.reshape(l2,(3)) 那样做,但它似乎不起作用,而且在其他方​​面我只是得到错误。

【问题讨论】:

  • “它似乎不起作用”是什么意思?会发生什么?
  • 列表符号中缺少逗号
  • 什么都没有发生,l1 打印相同的元素
  • 逗号不要错过,它是一个列表
  • 你混淆了 python 列表和 numpy 数组字符串表示

标签: python list numpy replace


【解决方案1】:

这是另一种方法。这对我有用。

import numpy as np

l1=np.asanyarray([[1, 2], [3, 4], [5, 6]])
l2=np.asanyarray([[5], [3], [9]])

l1[:,1] = l2[:,0]

# output: [[1 5]
#          [3 3]
#          [5 9]]

【讨论】:

    【解决方案2】:

    这应该可以工作。确定没有其他问题?

    import numpy as np
    
    l1 = np.array([[1, 2], [3, 4], [5, 6]])
    l2 = np.array([[5], [3], [9]])
    
    l1[:,1] = l2.reshape(3)
    # Or you can do
    l1[:,1] = np.reshape(l2, 3)
    
    print(l1)
    

    输出:

    [[1 5]
     [3 3]
     [5 9]]
    

    【讨论】:

      【解决方案3】:

      所以,我想通了(如果将来有人需要它),我将原始列表展平,然后将列表拆分为两个列表,然后在偶数索引处添加元素并重新整形,它似乎有效。

      m1=l1.flatten()
      l12=[]
      l11=[]
      for i in range(0,len(m1)):
         if i % 2==0:
         l12.append(m1[i])
         else:
         l11.append(m1[i])
      
      for x in range(len(l12)):
        l1.insert(2*x+1, l2[x])
      print(np.reshape(l12,(3,2)))
      

      【讨论】:

        猜你喜欢
        • 2022-11-10
        • 2019-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        相关资源
        最近更新 更多