我想要一个函数f(angleDeg),它从0开始采用度数的角度数组
import numpy as np
import random
def f(angleDeg):
angleRad = angleDeg*np.pi/180
return angleRad
现在我创建这些随机数:
x = [random.randint(5,85) for _ in range(50)]
x = [float(i) for i in x]
f(x)
然而,我收到错误:
angleRad = angleDeg * np.pi / 180
类型的非int
TypeError:不能将序列乘以'float'
我现在使用Garret Hyde的第二种方法修复它,我正在尝试为不在范围内的数字引发异常,所以我有:
if not (angleDeg > 0).all():
raise ValueError("angle must be between 0 and 90")
它给了我错误:
如果不是(angleDeg> 0).all():
AttributeError:'bool'对象没有属性'all'
答案 0 :(得分:1)
您的函数正在尝试将数组乘以pi。您需要迭代数组或使用numpy.array
。
def f(angleDeg):
angleRad = [x * np.pi / 180 for x in angleDeg]
return angleRad
或者
def f(angleDeg):
angleRad = np.array(angleDeg) * np.pi / 180
return angleRad
同样,您需要将angleDeg
从标准数组转换为numpy.array
。
angleDeg = np.array(angleDeg)
if not (angleDeg > 0).all():
raise ValueError("angle must be between 0 and 90")
答案 1 :(得分:1)
就像其他人所说的那样,你试图在列表上执行乘法,这不支持该操作。从
更改f()中的行angleRad = angleDeg*np.pi/180
到
angleRad = [deg*np.pi/180 for deg in angleDeg]
答案 2 :(得分:0)
你的x是你传递x的数组。我想你的意思是:
x = [f(i) for i in x]
或者这个:
x = list(map(f,x))