将度数转换为数组内的弧度

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,输出为:

    array([[ 1,  1,  0],
           [ 2,  3,  0],
           [ 3,  2,  0],
           [ 9,  5,  0],
           [11,  3,  0]])

当然最后一列需要更改,但不能更改为零,我还将数据类型从 int 更改为 float,输出仅为 0。我需要至少 3 位小数才能解决我的问题.

最后一列应该给出输出 as array([0.4363, 0.4014, 0.9599, 1.3614, 0.8203])。问题是 python 不会将小数保存在内存中,所以即使我乘以它也总是给出 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 之前改变类型>弧度操作

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