替换三维Python Lis中的元素

2024-05-08 00:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

len(y_pred_list)
# returns 5

我想检查每个元素并替换元素,其中:

  • 如果元素>;=0.5,则为1。你知道吗
  • 如果元素为<;0.5,则为0。你知道吗

你知道吗?你知道吗


Tags: ltgtnumpy元素列表lennp数组
3条回答

ibredeson的答案是你的具体情况。如果您有一个数组a,并且希望构造一个形状相同的数组b,该数组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])

要创建值为True(如果元素为>;=0.5)或False(否则为False)的数组,请执行以下操作:

new_array = y_pred_list >= 0.5

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

new_array.astype(int)
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

相关问题 更多 >