2016-10-03 137 views
0

我已经Python列表如果转换为NumPy的阵列将具有以下尺寸:(5,47151,10)在三维Python列表更换元素

np.array(y_pred_list).shape 
# returns (5, 47151, 10) 

len(y_pred_list) 
# returns 5 

我想去通过每一个元件和更换元件,其中:

  • 如果元素> = 0.5然后1.
  • 如果元素< 0.5然后按0

有什么想法?

回答

-2
arr=np.array(y_pred_list) #list to narray 
arr[arr<0.5]=0    # arr<0.5 is a mask narray 
arr[arr>=0.5]=1 
y_pred_list=arr.tolist() # narray to list 
1

要创建具有一个值的数组真如果元素是> = 0.5,否则为False:

new_array = y_pred_list >= 0.5 

使用.astype()方法用于numpy的阵列,以使所有的真元件1和所有假元素0:

new_array.astype(int) 
0

ibredeson的答案就在您的特定情况下的路要走。当你有阵列的并希望构造一个数组b其中只有两个值,这取决于在的状态下的相同的形状,可以考虑使用np.where(见the doc here):

import numpy as np 
a = np.array([0, 1, 0.3, 0.5]) 
b = np.where(a > 0.5, 2, 7) # 2 and 7 are the values you want to see in b, whether the 
# corresponding element in a is lesser than 0.5 or not. 
>>> b 
array([7, 2, 7, 7])