如何有条件地为多维数组赋值?

时间:2018-02-08 02:28:43

标签: python arrays numpy indexing

#T.shape=(10L,1L)
C=np.zeros((len(T),4)) 
C[T==label1]==[1,1,1,1]
C[T==label2]==[2,2,2,2]

得到错误:

  

布尔索引与维度1的索引数组不匹配; dimension是4但相应的布尔维度是1

我打算根据相应的T值将“=”右侧的4个值分配给C的每一行。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

函数numpy.where可以做到这一点。

T = np.array([['A','B','A','A'],['B','C','A','B']])
C = np.zeros(T.shape)
C[np.where(T == 'A')] = 1
print(C)

应该打印

[[1. 0. 1. 1.]
 [0. 0. 1. 0.]]