如何在python中使用不带if语句的阈值(如果低于阈值则为零,如果高于阈值则相同)

如何在python中使用不带if语句的阈值(如果低于阈值则为零,如果高于阈值则相同),python,arrays,operators,threshold,Python,Arrays,Operators,Threshold,我希望在不使用Python编写“If语句”的情况下进行内联比较。如果该值满足阈值条件,则应保持不变。如果没有,则应将该值设置为0 在Python中,我似乎不允许将布尔运算符直接应用于列表。在Matlab中,在数组运算中,“True”表示“1”,而“False”表示“0”,这很方便。这类似于matlab,但在python中不起作用(可能在numpy中会起作用?)。伪代码示例: a = [1.5, 1.3, -1.4, -1.2] a_test_positive = a>0 # Gives [

我希望在不使用Python编写“If语句”的情况下进行内联比较。如果该值满足阈值条件,则应保持不变。如果没有,则应将该值设置为0

在Python中,我似乎不允许将布尔运算符直接应用于列表。在Matlab中,在数组运算中,“True”表示“1”,而“False”表示“0”,这很方便。这类似于matlab,但在python中不起作用(可能在numpy中会起作用?)。伪代码示例:

a = [1.5, 1.3, -1.4, -1.2]
a_test_positive = a>0 # Gives [1, 1, 0, 0]
positive_a_only = a.*a>0 
预期结果:

positive_a_only>> [1.5, 1.3, 0, 0]

在python中实现这一点的最佳方法是什么?

到目前为止,我找到的最佳答案是枚举并循环数组,使用python操作符作为阈值或比较逻辑

关键是将索引元素与逻辑比较相乘。e、 g

a = 1.5
a_positive = a * (a>0)
print(a)
按预期返回值1.5,如果a为负值,则返回0

下面是完整列表的示例:

a = [1.5, 1.3 -1.4, -1.2]
for i, element in enumerate(a):
     a[i] = element*(element>0)

print(a)
[1.5, -0.0, -0.0]

希望这对别人有帮助

到目前为止,我找到的最佳答案是枚举并循环数组,使用python操作符作为阈值或比较逻辑

关键是将索引元素与逻辑比较相乘。e、 g

a = 1.5
a_positive = a * (a>0)
print(a)
按预期返回值1.5,如果a为负值,则返回0

下面是完整列表的示例:

a = [1.5, 1.3 -1.4, -1.2]
for i, element in enumerate(a):
     a[i] = element*(element>0)

print(a)
[1.5, -0.0, -0.0]
希望这对别人有帮助

您需要-

a = [1.5, 1.3, -1.4, -1.2]
positive_a_only = [i if i>0 else 0 for i in a]

print(positive_a_only)
输出

[1.5, 1.3, 0, 0]
这被称为 根据您的输入和预期输出,这是一种“pythonic”方法

列表理解提供了创建列表的简明方法。普通的 应用程序将创建新的列表,其中每个元素都是 应用于另一序列或序列的每个成员的某些操作 iterable,或创建满足 一定条件

您的用例是为以下内容而设计的:)

您需要-

a = [1.5, 1.3, -1.4, -1.2]
positive_a_only = [i if i>0 else 0 for i in a]

print(positive_a_only)
输出

[1.5, 1.3, 0, 0]
这被称为 根据您的输入和预期输出,这是一种“pythonic”方法

列表理解提供了创建列表的简明方法。普通的 应用程序将创建新的列表,其中每个元素都是 应用于另一序列或序列的每个成员的某些操作 iterable,或创建满足 一定条件

您的用例是为此而设计的:)

如果您使用的是数字数组,那么它可能值得一看

import numpy as np

a = np.array([1.5, 1.3, -1.4, -1.2])
a[a < 0] = 0
# [ 1.5  1.3  0.   0. ]
将numpy导入为np
a=np.数组([1.5,1.3,-1.4,-1.2])
a[a<0]=0
# [ 1.5  1.3  0.   0. ]
如果您使用的是数字数组,那么它可能值得一看

import numpy as np

a = np.array([1.5, 1.3, -1.4, -1.2])
a[a < 0] = 0
# [ 1.5  1.3  0.   0. ]
将numpy导入为np
a=np.数组([1.5,1.3,-1.4,-1.2])
a[a<0]=0
# [ 1.5  1.3  0.   0. ]

清洁!我喜欢。从Matlab来看,似乎应该有一个干净的方法来实现这一点,出于某种原因,我无法立即在堆栈溢出上找到这个答案。再次感谢你!我喜欢。从Matlab来看,似乎应该有一个干净的方法来实现这一点,出于某种原因,我无法立即在堆栈溢出上找到这个答案。再次感谢Hanks Delgan-这正是我在Matlab中做这件事的习惯!谢谢Delgan-这正是我在Matlab中做这件事的习惯!