我将数据存储在三个不同的数组中:A,B和C. 我还有一个整数数组Z,其中包含1,2或3 A,B,C和Z具有相同的形状 我想创建一个新数组D,它包含A中列出的值,如果Z中的对应元素是1,如果Z中的对应元素是2,则列出的值是B中列出的值,如果相应的元素是Z是3.
为此,我编写了嵌套版本的numpy.where代码。然而,代码看起来很难看。还有更好的方法吗?
import numpy as np
#Create arrays that hold the data
A = np.array([1.,1.,1.])
B = A * 2
C = A * 3
#Create an array that hold the zone numbers
Z = np.array([1,2,3])
#Now calculate the new array by figuring out the appropriate zone at each location
D = np.where(Z==1,A,np.where(Z==2,B, np.where(Z==3,C,0.0)))
#Output
print A
print B
print C
print D
[ 1. 1. 1.]
[ 2. 2. 2.]
[ 3. 3. 3.]
[ 1. 2. 3.]
答案 0 :(得分:1)
看看是否有效:
new=np.zeros_like(A)
new[Z==1] = A[Z == 1]
new[Z==2] = B[Z == 2]
new[Z==3] = C[Z == 3]