Python中的数学库和数组
我将使用数学库对数组进行一些计算。Python中的数学库和数组,python,arrays,numpy,math,vectorization,Python,Arrays,Numpy,Math,Vectorization,我将使用数学库对数组进行一些计算。 我试过这样的方法: import numpy as np import math a = np.array([0, 1, 2, 3]) a1 = np.vectorize(a) print("sin(a) = \n", math.sin(a1)) 不幸的是,它不起作用。出现错误:“TypeError:必须是实数,而不是矢量化” 我如何使用矢量化函数来计算这类事情 import numpy as np import math a = np.array([0,
我试过这样的方法:
import numpy as np
import math
a = np.array([0, 1, 2, 3])
a1 = np.vectorize(a)
print("sin(a) = \n", math.sin(a1))
不幸的是,它不起作用。出现错误:“TypeError:必须是实数,而不是矢量化”
我如何使用矢量化函数来计算这类事情
import numpy as np
import math
a = np.array([0, 1, 2, 3])
print("sin(a) = \n", [math.sin(x) for x in a])
sin一次需要一个实数
sin一次需要一个实数 的全部要点是,您不需要任何数学方法或任何列表理解:
>>> import numpy as np
>>> a = np.array([0, 1, 2, 3])
>>> a + 1
array([1, 2, 3, 4])
>>> np.sin(a)
array([ 0. , 0.84147098, 0.90929743, 0.14112001])
>>> a ** 2
array([0, 1, 4, 9])
>>> np.exp(a)
array([ 1. , 2.71828183, 7.3890561 , 20.08553692])
您可以像使用标量一样使用a
,并获得相应的数组
如果确实需要使用math.sin
(提示:不需要),可以使用它(函数本身,而不是数组):
其要点是,您不需要任何math
方法或任何列表理解:
>>> import numpy as np
>>> a = np.array([0, 1, 2, 3])
>>> a + 1
array([1, 2, 3, 4])
>>> np.sin(a)
array([ 0. , 0.84147098, 0.90929743, 0.14112001])
>>> a ** 2
array([0, 1, 4, 9])
>>> np.exp(a)
array([ 1. , 2.71828183, 7.3890561 , 20.08553692])
您可以像使用标量一样使用a
,并获得相应的数组
如果确实需要使用math.sin
(提示:不需要),可以使用它(函数本身,而不是数组):
我不知道你想做什么。据我所知,vectorize
希望您传递一个函数,但您传递了一个数组。当然,math.sin
希望您传递一个数字,但是您传递了一个矢量化的
(本质上是一个函数)。你到底想做什么?再仔细阅读numpy的文档!你可能只是想要np.sin(a)
(不需要导入数学;不需要混合这些,特别是不需要使用矢量化)。为什么你需要使用数学呢?要避免np.sin
的标准方法是定义f=np.vectorize(math.sin)
并应用f(a)
。听起来像个垃圾任务。我不知道你想做什么。据我所知,vectorize
希望您传递一个函数,但您传递了一个数组。当然,math.sin
希望您传递一个数字,但是您传递了一个矢量化的
(本质上是一个函数)。你到底想做什么?再仔细阅读numpy的文档!你可能只是想要np.sin(a)
(不需要导入数学;不需要混合这些,特别是不需要使用矢量化)。为什么你需要使用数学呢?要避免np.sin
的标准方法是定义f=np.vectorize(math.sin)
并应用f(a)
。听起来像是一个垃圾作业