鱼C论坛

 找回密码
 立即注册
查看: 1773|回复: 4

[已解决]求大佬帮忙 正余弦问题

[复制链接]
发表于 2020-11-27 14:56:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用Numpy功能求正余弦的值
要求:使用Numpy功能,尽量避免使用for或者while循环

正确的输出应如下所示:
sin(000 deg) = 0.000 & cos(000 deg) = 1.000
sin(015 deg) = 0.259 & cos(015 deg) = 0.966
sin(030 deg) = 0.500 & cos(030 deg) = 0.866
sin(045 deg) = 0.707 & cos(045 deg) = 0.707
sin(060 deg) = 0.866 & cos(060 deg) = 0.500
sin(075 deg) = 0.966 & cos(075 deg) = 0.259
sin(090 deg) = 1.000 & cos(090 deg) = 0.000
sin(105 deg) = 0.966 & cos(105 deg) =-0.259
...skip...
sin(315 deg) =-0.707 & cos(315 deg) = 0.707
sin(330 deg) =-0.500 & cos(330 deg) = 0.866
sin(345 deg) =-0.259 & cos(345 deg) = 0.966
sin(360 deg) =-0.000 & cos(360 deg) = 1.000
最佳答案
2020-11-27 22:04:44
import numpy as np

x = np.arange(0,360,15).reshape(24,1)
x = np.char.asarray(x.astype(np.str_)).rjust(3,'0')

y1 = np.arange(0,360,15).reshape(24,1)
y2 = y1 + 90

y1 = np.around(np.sin(y1*np.pi/180),decimals=3)
y1_ = y1.copy()
y1 = np.char.asarray(y1.astype(np.str_))
y1 = (y1 * (1*(y1_>=0))).ljust(5,'0').replace('00000','') + (y1 * (1*(y1_<0))).ljust(6,'0').replace('000000','')

y2 = np.around(np.sin(y2*np.pi/180),decimals=3)
y2_ = y2.copy()
y2 = np.char.asarray(y2.astype(np.str_))
y2 = (y2 * (1*(y2_>=0))).ljust(5,'0').replace('00000','') + (y2 * (1*(y2_<0))).ljust(6,'0').replace('000000','')

r = 'sin('+x+' deg) = '+y1+' & cos('+x+' deg) = '+y2

print(str(r).replace("'",'').replace("[",'').replace("]",''))

写这个累死我了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-27 16:45:43 | 显示全部楼层
本帖最后由 Tac 于 2020-11-27 16:48 编辑

help
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-27 22:04:44 | 显示全部楼层    本楼为最佳答案   
import numpy as np

x = np.arange(0,360,15).reshape(24,1)
x = np.char.asarray(x.astype(np.str_)).rjust(3,'0')

y1 = np.arange(0,360,15).reshape(24,1)
y2 = y1 + 90

y1 = np.around(np.sin(y1*np.pi/180),decimals=3)
y1_ = y1.copy()
y1 = np.char.asarray(y1.astype(np.str_))
y1 = (y1 * (1*(y1_>=0))).ljust(5,'0').replace('00000','') + (y1 * (1*(y1_<0))).ljust(6,'0').replace('000000','')

y2 = np.around(np.sin(y2*np.pi/180),decimals=3)
y2_ = y2.copy()
y2 = np.char.asarray(y2.astype(np.str_))
y2 = (y2 * (1*(y2_>=0))).ljust(5,'0').replace('00000','') + (y2 * (1*(y2_<0))).ljust(6,'0').replace('000000','')

r = 'sin('+x+' deg) = '+y1+' & cos('+x+' deg) = '+y2

print(str(r).replace("'",'').replace("[",'').replace("]",''))

写这个累死我了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-28 11:53:01 | 显示全部楼层

多谢大佬了,第四行np那里运行的时候标红了但是输出是没问题的,这是什么原因啊?能请大佬解答一下嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-28 13:54:14 | 显示全部楼层
Tac 发表于 2020-11-28 11:53
多谢大佬了,第四行np那里运行的时候标红了但是输出是没问题的,这是什么原因啊?能请大佬解答一下嘛?

不知道 不符合编辑器的规范吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 13:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表