簡體   English   中英

將度數轉換為數組內的弧度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM