Python 如何将列表中的负数转换为0?
如何将内部的所有负数转换为0Python 如何将列表中的负数转换为0?,python,list,numpy,Python,List,Numpy,如何将内部的所有负数转换为0 [[213, -197, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [-22, 119, 243, 308]] 感谢您使用列表理解: inp=[[213,-197124163],[45596149175],[36421013154],-221119243308]] 输出=[[0如果x
[[213, -197, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [-22, 119, 243, 308]]
感谢您使用列表理解:
inp=[[213,-197124163],[45596149175],[36421013154],-221119243308]]
输出=[[0如果x<0,则为0;对于y中的x,则为x]对于inp中的y]
打印(输出)
这张照片是:
[[213, 0, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [0, 119, 243, 308]]
使用列表理解:
inp=[[213,-197124163],[45596149175],[36421013154],-221119243308]]
输出=[[0如果x<0,则为0;对于y中的x,则为x]对于inp中的y]
打印(输出)
这张照片是:
[[213, 0, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [0, 119, 243, 308]]
使用numpy的矢量化属性:
[[213, 0, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [0, 119, 243, 308]]
将numpy导入为np
arr=np.数组([[213,-197124163],[455196149175],[36421013154],-221119243308])
arr[arr<0]=0
打印(arr)
使用numpy的向量化属性:
[[213, 0, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [0, 119, 243, 308]]
将numpy导入为np
arr=np.数组([[213,-197124163],[455196149175],[36421013154],-221119243308])
arr[arr<0]=0
打印(arr)
只需返回一个新列表,其中的元素为负数,即0
def转换(列表):
p=[]
对于列表中的NUM:
t=[]
对于num中的num:
t、 追加(如果num<0,则为0,否则为num)
p、 附加(t)
返回p
列表=[[213,-197124163],[455196149175],[364210131154],-221119243308]]
结果=转换(列表)
打印(结果)
结果变成
只需返回一个新列表,其中的元素为负数,即0
def转换(列表):
p=[]
对于列表中的NUM:
t=[]
对于num中的num:
t、 追加(如果num<0,则为0,否则为num)
p、 附加(t)
返回p
列表=[[213,-197124163],[455196149175],[364210131154],-221119243308]]
结果=转换(列表)
打印(结果)
结果变成
另一种通过np.where实现的方法-
import numpy as np
arr = np.array([[213, -197, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [-22, 119, 243, 308]])
arr[arr < 0] = 0
print(arr)
将numpy导入为np
l=[[213,-197124163],[455196149175],[36421013154],-221119243308]]
打印((np.where)(np.array(l)通过np.where执行此操作的另一种方法-
import numpy as np
arr = np.array([[213, -197, 124, 163], [455, 96, 149, 175], [364, 210, 131, 154], [-22, 119, 243, 308]])
arr[arr < 0] = 0
print(arr)
将numpy导入为np
l=[[213,-197124163],[455196149175],[36421013154],-221119243308]]
打印((np.where)(np.array(l)如果您不需要使用numpy
或pandas
,则坚持列表理解会更简单、更快。或者对子列表进行等效的就地修改。numpy代码将更易于编写(如果您知道),但从列表中创建数组需要时间。@hpaulj出于好奇,我对所有这些答案进行了计时;即使对于非常大的(1000x1000)列表,直接列表理解(Tim的答案)也明显快了(~50%)您可能认为矢量化的好处将超过转换成本的输入。如果您不需要使用numpy
或pandas
,则坚持列表理解将更简单、更快。或者对子列表进行等效的就地修改。numpy代码将更易于编写(如果你知道的话),但是从你的列表中创建一个数组需要时间。@hpaulj出于好奇,我对所有这些答案进行了计时;即使对于非常大(1000x1000)的输入,如果你认为矢量化的好处会超过转换成本,那么直接列表理解(Tim的答案)也会显著加快(~50%)。