python – n球面坐标系到笛卡尔坐标系
发布时间:2020-11-18 10:06:02 所属栏目:Python 来源:互联网
导读:有没有有效的方法在笛卡尔坐标系和 n-spherical one之间进行切换?转型如下: 以下是我的代码,但我想摆脱循环: import numpy as npimport scipy.sparse def coord_transform_n(r,alpha): alpha: the n-2 values between [0,pi) and last one
有没有有效的方法在笛卡尔坐标系和 n-spherical one之间进行切换?转型如下: 以下是我的代码,但我想摆脱循环: import numpy as np import scipy.sparse def coord_transform_n(r,alpha): """alpha: the n-2 values between [0,pi) and last one between [0,2pi) """ x=[] for i in range(alpha.shape[0]): x.append(r*np.prod(np.sin(alpha[0:i]))*np.cos(alpha[i])) return np.asarray(x) print coord_transform_n(1,np.asarray(np.asarray([1,2]))) 解决方法您可以通过记忆中间产品来加速您的原始代码,即def ct_dynamic(r,alpha): """alpha: the n-2 values between [0,2pi) """ x = np.zeros(len(alpha) + 1) s = 1 for e,a in enumerate(alpha): x[e] = s*np.cos(a) s *= np.sin(a) x[len(alpha)] = s return x*r 但仍然在速度上失去基于numpy的方法 def ct(r,arr): a = np.concatenate((np.array([2*np.pi]),arr)) si = np.sin(a) si[0] = 1 si = np.cumprod(si) co = np.cos(a) co = np.roll(co,-1) return si*co*r >>> n = 10 >>> c = np.random.random_sample(n)*np.pi >>> all(ct(1,c) == ct_dynamic(1,c)) True >>> timeit.timeit('from __main__ import coord_transform_n as f,c; f(2.4,c)',number=10000) 2.213547945022583 >>> timeit.timeit('from __main__ import ct_dynamic as f,number=10000) 0.9227950572967529 >>> timeit.timeit('from __main__ import ct as f,number=10000) 0.5197498798370361 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 如何清理与send_file一起使用的临时文件?
- Python和Matlab之间的通信
- python-2.7 – 如何在python中使用webdriver选择下拉列表值
- python – sqlalchemy在yield_per期间发生游标错误
- 在django管理员中替代用户选择界面以减小大型网站上的页面大
- python – 覆盖二维向量类中的__mul__以保持传播性
- 解密Python中的描述符(descriptor)
- python – 问题子类化内置类型
- python – PyTables批量获取和更新
- python – Selenium’WebElement’对象没有属性’Get_Attri
推荐文章
站长推荐
- python爬虫防止IP被封的方法
- python – 如何使员工可以访问Django设置?
- Python使用metaclass实现Singleton模式的方法
- django-forms – 如何使用modelformset_factory创
- python – 使用httplib2.Http()对象时的最佳实践
- 使用python,自动确定用户当前时区的最准确方法是
- python – 使用pandas返回hdf文件中所有数据集的
- 使用Django Crispy Forms渲染单独的MultiWidget字
- python – matplotlib – 传说在单独的子图
- 如果我在Python 3中将文件截断为零,我是否还需要
热点阅读