Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表中的负数转换为0?_Python_List_Numpy - Fatal编程技术网

Python 如何将列表中的负数转换为0?

Python 如何将列表中的负数转换为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

如何将内部的所有负数转换为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<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%)。