iT邦幫忙

2021 iThome 鐵人賽

DAY 27
1
Software Development

宇宙 69 大魔王的 python 世界系列 第 27

【Day 27】NumPy (4):np.sqrt(), np.square()

前言

今天要來介紹一下用於數學運算的函式,sqrt 開根號,以及 square 平方

NumPy

np.sqrt()

把輸入 array 的每個元素都取平方根並回傳,完整的語法如下。

np.sqrt(arr, out = None)

  • arr :代表輸入的 array。
  • out :如果有 out,會將結果儲存在 out 內,此 out 要和 arr 的形狀一樣。
import numpy as np

array1 = np.array([1, 4, 9, 16])    # 建立一個 array
out_array = np.zeros(4)             # 建立一個空的 array,大小和 array1 一樣大
print(out_array)                    # 檢查建立的 array
# [0. 0. 0. 0.]

x = np.sqrt(array1, out_array)    # 把 array 內的元素都取平方根並放入 x,以及放入 out_array

print(x)
# 輸出
# [1. 2. 3. 4.]

print(out_array)
# 輸出
# [1. 2. 3. 4.]
  • outarr 的形狀不一樣,就會出現 ValueError

    import numpy as np
    
    array1 = np.array([1, 4, 9, 16])
    out_array = np.zeros((2, 2))
    print(out_array)
    
    
    x = np.sqrt(array1, out_array)
    
    print(x)
    print(out_array)
    

  • 對負數使用 np.sqrt()

    import numpy as np
    
    array1 = np.array([-1, -4, -9, -16])
    
    x = np.sqrt(array1)
    
    print(x)
    

    出現 RuntimeWarning,並回傳 nan(非數值)

  • 對複數使用 np.sqrt()

    import numpy as np
    
    array1 = np.array([1j, 4 + 2j , 1j, 3 + 4j])    # 建立一個 array
    
    x = np.sqrt(array1)
    
    print(x)
    # 輸出
    # [0.70710678+0.70710678j 2.05817103+0.48586827j 1.41421356+1.41421356j 2.+1.j]
    

    若有兩個不同的平方根只會輸出一個。

numpy.square()

把輸入 array 的每個元素都取平方並回傳,完整的語法如下。

np.square(arr, out = None)

  • arr :代表輸入的 array。
  • out :如果有 out,會將結果儲存在 out 內,此 out 要和 arr 的形狀一樣。
import numpy as np

array1 = np.array([1, 4, 9, 16])    # 建立一個 array
out_array = np.zeros(4)             # 建立一個空的 array,大小和 array1 一樣大
print(out_array)                    # 檢查建立的 array
# 輸出
# [0. 0. 0. 0.]

x = np.square(array1, out_array)    # 把 array 內的元素都取平方並放入 x,以及放入 out_array

print(x)
# 輸出
# [  1.  16.  81. 256.]

print(out_array)

# 輸出
# [  1.  16.  81. 256.]
  • outarr 的形狀不一樣,就會出現 ValueError:同上面 sqrt

  • 對負數使用 np.square()

    import numpy as np
    
    array1 = np.array([-1, -4, -9, -16])
    
    x = np.square(array1)
    
    print(x)
    # 輸出
    # [  1  16  81 256]
    
  • 對複數使用 np.square()

    import numpy as np
    
    array1 = np.array([1 + 5j, 3 + 6j, -9j, 1j])
    
    x = np.square(array1)
    
    print(x)
    # 輸出
    # [-24.+10.j -27.+36.j -81. +0.j  -1. +0.j]
    

待續...


上一篇
【Day 26】NumPy (3):Slicing, Copy, View, shape, Concatenate
下一篇
【Day 28】NumPy (5):sum(), power(), transpose()
系列文
宇宙 69 大魔王的 python 世界30

1 則留言

0
juck30808
iT邦新手 3 級 ‧ 2021-10-12 18:33:53

恭喜即將完賽!!!

我要留言

立即登入留言