np.power: 如何使用numpy power()函数

2,792 阅读5分钟

Python NumPy power() Function Example

Numpy是Python中一个高度健壮和优秀的数据科学库。例如, numpy **power()**函数将第一个输入数组中的元素视为基数,并将其返回到第二个输入数组中相应分量的

np.power

np.power() 是一个数学库函数,用于获得一个包含第一个数组元素的数组提升到第二个数组的幂元素。np.power() 函数需要两个主要参数。1) 基数2的数组)。

****np.power()函数返回含有第一个数组元素的数组,并将其提升到第二个数组的幂元素。 这意味着 如果我们有两个数组(大小相同)arr1和arr2,那么numpy.power()将计算 arr1i^arr2i ,每个i=0到大小_of_arrary-1。 如果arr2的值不是正数,那么这个函数将返回一个ValueError

语法

numpy.power(arr_of_base, arr_of_exp, out = None, 
            where = True, casting = ‘same_kind’, 
            order = ‘K’, dtype = None) 

参数

  1. arr_of_base: 这是第一个数组,其元素作为基数工作。正如所暗示的,这个arr_of_base参数的参数应该是数字阵列。这些整数将被用作我们指数的 "基数"。
  2. arr_of_exp: 这是第二个数组,其元素作为指数工作。这个参数使你能够指定你将应用于基数的指数,array-of-bases 。注意,就像array-of-exponents 输入一样,这个输入必须是Numpy数组或类似数组的对象。所以在这里,你可以提供NumPy数组,一个Python列表,一个元组,或者另一个具有类似数组属性的Python对象。你甚至可以提供一个单一的整数。
  3. out。 这是一个 ndarray 和一个可选字段。 结果将被存储在一个地方。如果给定,输入广播的形状必须在。当一个新分配的数组被返回,除非收到或无。一个元组(只可能作为一个关键字参数)的长度必须与输出相等。
  4. 其中。 这个状态是通过数据传输的。在条件为True的地方,out数组将被设置为ufunc结果。out数组将在其他地方保持其原有的兴趣。注意,如果默认的out = None产生一个未初始化的out列表,其中条件为False的位置将保持未初始化。

返回值

NumPy power()函数返回一个数组,其中第一个数组的元素上升到第二个数组的幂元素。结果将是整数形式。

显示power()工作原理的程序

请看下面的代码。

#Importing numpy
import numpy as np

#Declaring arr1 and arr2
arr1 = [4, 2, 1, 6, 5]
arr2 = [4, 0, 5, 2, 3]

#Now we will check working of power()
print("Elements of arr1 raised to the power elements of arr2 are: ")
print(np.power(arr1, arr2))

输出

Elements of arr1 raised to the power elements of arr2 are:
[256   1   1  36 125]

解释

在这个程序中,我们首先声明了两个相同形状的数组,并且都是整数,你可以看到。

然后我们调用了numpy.power()来计算 arr1^iarr2i。

因此,根据公式,我们得到了我们想要的输出。

Numpy中的负幂

我们应该用NumPy的power来使用指数吗?答案是不。np.power()对负指数不起作用。如果你试图使用负幂,它会抛出ValueError。不允许整数到整数的幂。

请看下面的代码。

# Program to show ValueError when elements of arr2 are negative

# Importing numpy
import numpy as np

# Declaring arr1 and arr2
arr1 = [4, 2, 1, 6, 5]
arr2 = [4, 0, -5, 2, -3]

# Now we will check working of power()
print("Elements of arr1 raised to the power elements of arr2 are: ")
print(np.power(arr1, arr2))

输出

Elements of arr1 raised to the power elements of arr2 are:
Traceback (most recent call last):
  File "app.py", line 12, in <module>
    print(np.power(arr1, arr2))
ValueError: Integers to negative integer powers are not allowed.

解释

在这个程序中,我们首先声明了两个相同形状的数组,并且都是整数,你可以看到。 然后我们调用了numpy.power()来计算 arr1i^arr2i。 但是如上所述,当第二个数组的元素为负数时,这个函数返回ValueError,我们得到了一个ValueError

矩阵的Numpy幂

要在numpy中找到Matrix的幂,我们必须使用numpy.linalg.matrix_power(a, n) 函数。

对于正数n,功率是通过重复Matrix的平方和矩阵的乘法计算出来的。

如果n == 0,则返回与M相同形状的身份矩阵。

如果n<0,则计算出逆矩阵并将其提高到abs(n)。

请看下面的代码。

# app.py

import numpy as np

data = np.array([[0, 1], [-1, 0]])
op = np.linalg.matrix_power(data, 3)
print(op)

输出

 python3 app.py
[[0 -1]
 [1 0]]

让我们看看另一个例子。

# app.py

import numpy as np

data = np.array([[0, 1], [-1, 0]])
op = np.linalg.matrix_power(data, 0)
print(op)

输出

python3 app.py
[[1 0]
 [0 1]]

Numpy power vs. **

numpy.power()和Numpy数组上的**运算符之间有什么区别吗?是的,这两种方法在时间执行上是有区别的。

import numpy as np
import time

arr1 = np.array([[21, 19], [11, 18]])
arr2 = np.array([[11, 18], [21, 19]])

first_start_time = time.time()
print(np.power(arr1, arr2))
print("The execution time for np.power() method: ",
      time.time() - first_start_time)

second_start_time = time.time()
print(arr1 ** arr2)
print("The execution time for ** approach: ", time.time() - second_start_time)

输出

[[ 350277500542221 -4519998179177339479]
[ 3105570700629903195 -8946610666848387072]]

The execution time for np.power() method: 0.0004169940948486328

[[ 350277500542221 -4519998179177339479]
[ 3105570700629903195 -8946610666848387072]]

The execution time for ** approach: 0.00032711029052734375

你可以看到,第一种和第二种方法的区别在于执行时间。**方法比np.power()方法略快。

结论

np.power()函数在Numpy中计算指数。Python numpy.power()函数使我们能够进行简单的指数运算,如b到n的幂,它还允许你对大型Numpy数组进行运算。我们已经看到了如何找到np数组的幂和找到矩阵的幂。

本教程就到此为止。