Python Numpy运算符不起作用

Python Numpy运算符不起作用,python,numpy,Python,Numpy,首先:我不确定操作数是否是正确的字。我指的是像“如果/那么/否则”这样的东西。 编辑:是操作员 在代码的非函数部分,我想切断一个正弦函数,并将值设置为切断的边界: from numpy import * x = arange(-15, 15, 1) y = 12.5*sin(2*pi/3.8*x+pi/2) for i in y: print(y[i]) if y[i] > 2.5: print(y[i]) y[i] = 2.5 但是py

首先:我不确定操作数是否是正确的字。我指的是像“如果/那么/否则”这样的东西。 编辑:是操作员

在代码的非函数部分,我想切断一个正弦函数,并将值设置为切断的边界:

from numpy import *
x = arange(-15, 15, 1)
y = 12.5*sin(2*pi/3.8*x+pi/2)

for i in y:
    print(y[i])
    if y[i] > 2.5:
        print(y[i])
        y[i] = 2.5
但是python并不总是这样做。我得到的是:

11.8227155213
11.8227155213
-8.46601964532
-5.02119280816
-8.46601964532
-10.9934218901
6.83685197653
6.83685197653
2.5
-10.9934218901
-8.46601964532
-5.02119280816
-8.46601964532
-10.9934218901
6.83685197653
6.83685197653
3.06856858926
3.06856858926
-5.02119280816
3.06856858926
3.06856858926
-5.02119280816
2.5
-10.9934218901
2.5
-8.46601964532
-5.02119280816
-10.9934218901
-10.9934218901
2.5
2.5
-10.9934218901
-8.46601964532
-5.02119280816
-8.46601964532
对我来说是6.8368。。大于2.5。 如果我以较小的步骤计算,它将继续。 这是一项如此简单的任务,那么我的错在哪里呢?

您正在使用

for i in y:
但是y包含一堆浮点数,所以y[i]可能不是你想要的

试一试

另一个不错的选择是

y = minimum(y,2.5)

>,1,>是运算符,而2和1是其操作数。我建议不要使用from numy import*它可能会导致名称冲突,并且可能会导入比您将要使用的多得多的内容。作为np导入numpy似乎是使用numpy时的标准。啊。。我以前见过这个。。这应该可以解决问题。但要知道:到底是什么迭代了我的函数?因为对于某些价值观来说,它是有效的。
y = minimum(y,2.5)