[英]convering degrees to radians inside an array
我有一個數組 A,
array([[ 1, 2, 25],
[ 3, 4, 23],
[ 2, 6, 55],
[ 9, 7, 78],
[11, 5, 47]])
我將數組的最后一列,應該是度值 (25,23,55,78,47) 更改為弧度。
這很容易做到,我做到了:
A_rad[:,2] = np.pi/180 *A[:,2]
你也可以使用np.radians
, output 是:
array([[ 1, 1, 0],
[ 2, 3, 0],
[ 3, 2, 0],
[ 9, 5, 0],
[11, 3, 0]])
當然最后一列需要更改,但不能更改為零,我還將數據類型從 int 更改為 float,output 只有 0.,我需要至少 3 位小數才能解決我的問題。
最后一列應給出 output as array([0.4363, 0.4014, 0.9599, 1.3614, 0.8203])
。 問題是 python 不保存 memory 中的小數,所以即使我乘以它也總是給出 0。
python可以嗎?
有任何想法嗎。
您應該將數組轉換為浮動:
import numpy as np
A = np.array([
[ 1, 2, 25],
[ 3, 4, 23],
[ 2, 6, 55],
[ 9, 7, 78],
[11, 5, 47]
]).astype(float)
A[:,2] = np.radians(A[:,2])
print(A)
這會產生:
[[ 1. 2. 0.43633231]
[ 3. 4. 0.40142573]
[ 2. 6. 0.95993109]
[ 9. 7. 1.36135682]
[11. 5. 0.82030475]]
順便說一句:除了轉換之外,您還可以在初始化期間定義數據類型,如下所示: A = np.array([...], dtype=float)
如果你打印A.dtype
你會看到int32
所以當你做你的數學運算時它們一直是ints
而不是floats
所以在 deg> radians 操作之前改變類型
A = np.array([[1, 2, 25],
[3, 4, 23],
[2, 6, 55],
[9, 7, 78],
[11, 5, 47]])
A_rad = A.copy().astype(float)
A_rad[:, 2] = np.pi / 180 * A[:, 2]
print(A_rad)
print(A_rad.dtype)
給予
[[ 1. 2. 0.43633231]
[ 3. 4. 0.40142573]
[ 2. 6. 0.95993109]
[ 9. 7. 1.36135682]
[11. 5. 0.82030475]]
float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.