[英]Python: Replace 2D numpy array filled with indices by values from a 1D array
[英]Python: replace values in a 2d array from another 1d array based on some conditions
在此先感谢您的帮助! 我想做以下事情,但我是 Python 新手,有点不确定如何有效地做。
A=[[1,1],[2,3]]
。B=[0.1,0.2,0.8,0.9]
。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.