【问题标题】:How to merge two 2D arrays with conditions of columns values如何将两个二维数组与列值的条件合并
【发布时间】:2022-10-23 16:28:42
【问题描述】:

我正在尝试将两个具有特定条件的 2D NumPy 数组合并。假设我们有:

A=[100,200,1,2,3
   105,203,2,2,1
   107,201,1,3,1]

B=[107,201,80]
   100,200,70
   105,203,50]

我想获得:

 C=[100,200,1,2,3,70
   105,203,2,2,1,50
   107,201,1,3,1,80]

因此,当第一列和第二列的值匹配时,取 B 中的第三列并将其附加到 A。

我怎样才能做到这一点? 谢谢。

【问题讨论】:

  • 请格式化您的代码以显示二维结构。
  • 您忘记发布您如何尝试解决此问题。
  • 这些不是二维数组(也不是有效的 Python)。

标签: python arrays numpy


【解决方案1】:

你可以试试这个

A=[[100,200,1,2,3],
   [105,203,2,2,1],
   [107,201,1,3,1]]
B=[[107,201,80],
   [100,200,70],
   [105,203,50]]

temp_B = list(zip(*B))
d_B = dict(zip(temp_B[0], temp_B[2]))
A = [i + [d_B.get(i[0],0)] for i in A]
# [[100, 200, 1, 2, 3, 70], [105, 203, 2, 2, 1, 50], [107, 201, 1, 3, 1, 80]]

【讨论】:

  • 好的,如果 B 的行数少于 A 怎么办?在这种情况下,我想为最后(第六)列分配一个等于 0 的值。我应该如何修改你的代码?
  • 你能在问题上发布那个案例吗?在这种情况下我可以帮助你
  • 我的数据很大,我将重新创建一个示例: A=[[100,200,1,2,3], [105,203,2,2,1], [107,201,1,3,1]] B=[[107,201 ,80], [100,200,70]] 我在找:C=[[100,200,1,2,3,70], [105,203,2,2,1,0], 107,201,1,3,1, 80]]
  • 我已经更改了代码,现在它也适用于您的案例
  • 在第三行中,您的意思是“A = [i + [d_B.get(i[0],0)] for i in A]”吗?是“d_B.get”而不是“d.get”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多