如何创建一个随机的浮动字符串?

时间:2015-02-18 02:33:45

标签: python python-2.7

我想要一个函数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
  TypeError:不能将序列乘以'float'

类型的非int

我现在使用Garret Hyde的第二种方法修复它,我正在尝试为不在范围内的数字引发异常,所以我有:

if not (angleDeg > 0).all():
   raise ValueError("angle must be between 0 and 90")

它给了我错误:

  

如果不是(angleDeg> 0).all():
  AttributeError:'bool'对象没有属性'all'

3 个答案:

答案 0 :(得分:1)

第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

第2部分

同样,您需要将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))