替换3维Python列表中的元素

时间:2016-10-03 04:04:03

标签: python arrays list numpy

如果转换为NumPy数组,我有一个Python列表将具有以下维度:(5,47151,10)

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

len(y_pred_list)
# returns 5

我想浏览每个元素并替换以下元素:

  • 如果元素> = 0.5则为1。
  • 如果元素< 0.5然后0。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果元素为> = 0.5,则创建值为True的数组,否则为False:

new_array = y_pred_list >= 0.5

使用Numpy数组的.astype()方法使所有True元素1和所有False元素0:

new_array.astype(int)

答案 1 :(得分:0)

ibredeson的回答是你的具体案例。当你有一个数组a并且想要构造一个只有两个值的相同形状的数组b时,根据a上的条件,考虑使用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])

答案 2 :(得分:-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