将度数转换为数组内的弧度
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
我有一个数组 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