📜  numpy 通用化 ufunc - Python (1)

📅  最后修改于: 2023-12-03 15:18:03.469000             🧑  作者: Mango

Numpy 通用化 ufunc - Python

Numpy是Python中用于科学计算的一个非常流行的库。其中包含了一些高性能、多维数组操作的函数,并称Numpy数组为ndarray。其中与此相关的是ufunc,即通用函数,它是指对ndarray中的每个元素进行逐个操作的函数。

什么是ufunc?

通用函数(ufunc)是一种能对数组的每个元素进行处理的函数,它是Numpy中最重要的组成部分之一。ufunc在Numpy中实现了一些简单的算术函数(加、减、乘、除等),也实现了一些更复杂的数学函数(三角函数、指数函数、对数函数等)。

ufunc 的优点

Numpy中ufunc的一个重要的优点是它们非常快,因为它们是用C语言编写的。这使得大型数组的计算变得非常高效。此外,ufunc还具有以下几个特点:

  1. 可以接受标量值或数组作为输入。
  2. 输出也可以是标量或数组。
  3. 可以进行逐元素操作。
演示 numpy ufunc

下面我们来看看一些实际的例子:

import numpy as np

# 两个标量相加
a = np.add(1, 2)
print("Addition of two numbers:",a)

# 对数组进行逐元素操作
b = np.array([1, 2, 3, 4])
c = np.array([10, 20, 30, 40])
d = np.add(b,c)
print("Addition of two arrays:",d)

输出:

Addition of two numbers: 3
Addition of two arrays: [11 22 33 44]

在上面的例子中,我们首先使用了np.add()函数对两个标量进行相加,然后使用同样的函数对两个数组进行相加,并返回了一个新数组。

我们还可以使用其他很多的ufunc函数,如np.subtract()np.multiply()np.divide() 等等。

# 三角函数
angles = np.array([0, 30, 45, 60, 90])
print("Sine of angles in array:")
# Convert to radians by multiplying with pi/180
sin_values = np.sin(angles*np.pi/180)
print(sin_values)

# 指数函数
# 铸造实数为复数
Num = 1.0
Num_complex = np.array([1+2j, 2+4j, 4+6*1j, 6+8j])
print("Real number :", Num)
print("Complex number :",Num_complex)
exp_values = np.exp(Num_complex)
print("Exponent of complex numbers :")
print(exp_values)

输出:

Sine of angles in array:
[0.         0.5        0.70710678 0.8660254  1.        ]
Real number : 1.0
Complex number : [1.+2.j 2.+4.j 4.+6.j 6.+8.j]
Exponent of complex numbers :
[-1.13120497+2.47172667j -4.16146837+6.71319404j 54.59815003-9.65084717j
  4.03428793+5.36423785j]

在上面的代码中,我们使用了两个不同的ufunc函数:np.sin()np.exp()。我们通过给np.sin()函数提供包含几个角度的Numpy数组来使用 sin()函数。

我们将一个实数和一个复数数组提供给 np.exp() 函数,以计算复数的每个元素的对数值。

结束语:

Numpy提供了非常强大、快速和可扩展的ufuncs,它们可以用于执行各种各样的计算。当您需要对大量数据进行高速计算时,ufunc函数将非常有用。