数学库和数组在Python(Math library and arrays in Python)

2019-09-26 13:47发布

我是用数学函数库做一个阵列上的一些计算。
我想是这样的:

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: must be real number, not vectorize"

我如何使用矢量化功能,能够计算出样的东西?

Answer 1:

整点numpy的是,你不需要任何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 (提示:你没有),你可以向量化它(函数本身,而不是数组):

>>> vsin = np.vectorize(math.sin)
>>> vsin(a)
array([ 0.        ,  0.84147098,  0.90929743,  0.14112001])


Answer 2:

import numpy as np
import math
a = np.array([0, 1, 2, 3])
print("sin(a) = \n", [math.sin(x) for x in a])

math.sin需要一次一个实数。



文章来源: Math library and arrays in Python