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)
。听起来像是一个垃圾作业