繁体   English   中英

Python:根据某些条件从另一个一维数组替换二维数组中的值

[英]Python: replace values in a 2d array from another 1d array based on some conditions

在此先感谢您的帮助! 我想做以下事情,但我是 Python 新手,有点不确定如何有效地做。

  1. 我有一个二维数组,例如A=[[1,1],[2,3]]
  2. 上述二维数组中的每个值对应另一个一维数组中的索引,例如: B=[0.1,0.2,0.8,0.9]
  3. 最终结果应该是: C=[[0.2,0.2],[0.8,0.9]] 这意味着, C[i,j]=B[index=A[i,j]]

上面是一个简单的例子。 但在实践中,A 可能是一个巨大的数组,所以如果有任何方法可以有效地做到这一点,我将不胜感激。 谢谢!

根据您的帖子,您几乎已经得到了答案。 如果您真的在寻找单行代码,您可以这样做。

c = B[A]

c
Out[24]: 
array([[0.2, 0.2],
       [0.8, 0.9]])

上面的代码用于 numpy 数组。 另一方面,如果它是一个列表,则需要列表理解。

首先尝试从第一个列表的索引和与结果列表的关系规划序列。

A = [[1,1],[2,3]]
B=[0.1,0.2,0.8,0.9]

C = [[B[i] for i in j] for j in A]

print(C)

根据您对@PAUL ANDY DE LA CRUZ YANAC 回答的评论,我看到您正在尝试使用numpy并避免for loop ,但据我所知,您需要至少使用一次for loop

import numpy as np

for x, y in np.ndindex(np.array(A).shape):
    A[x][y] = B[A[x][y]]

注意:此方法更改了原始列表A 但是,如果您想创建一个新列表,请查看@Paul Dlc 的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM