python-3.x - Pythonic OOP 和 sklearn/numpy 优化
问题描述
我经常遇到这个问题,我使用 OOP 开发我的代码,当我想使用 numpy、sklearn 模块或任何其他“矩阵”加速程序时,如果不循环所有对象,我无法找出最好的方法.
例如,我有一个名为 Particle 的对象,它的坐标为 x:
class Particle(object):
def __init__(self, x):
self.x = x
然后我创建了一堆像:
from numpy.random import random
np = 100
p = []
points = random((np, 3))
for i in range(np):
p.append(Particle(points[i, :]))
最后,我想得到粒子之间的距离。为此,我可以使用蛮力搜索并评估距离的范数,或者使用优化的模块来更快地完成它,例如:
from sklearn.metrics.pairwise import pairwise_distances
pairwise_distances(X=points)
然而,这样我没有使用 OOP 的优势。
我试过一些奇怪的东西,比如:
pairwise_distances(X=p[:].x)
但当然,它不起作用。
我遇到的另一个例子与捕食者-猎物模型有关。理想情况下,从数字的角度来看,我会将每只动物组装成矩阵形式,这样解决起来会更快,但从 OOP 中我创建了一个包含常量的动物对象,为了解决它,我陷入了混乱且缓慢的代码。
有没有办法以优雅的 Python 方式解决这些问题?我应该选择以一种方式编程而不是另一种吗?
谢谢你。
解决方案
推荐阅读
- c++ - 在类中获取指向自身的指针
- mysql - mysql连接带有数字变量的json路径失败
- javascript - 如何在新的 Selenium IDE 中使用字符串函数(子字符串)
- vue.js - Vue setTimeout 不适用于变量的值
- ios - swift alamofire request json asynchronous
- node.js - 在 NodeJS 中承诺混淆
- symfony - 当抽象父类是返回类型时无法返回子类
- javascript - 注入内容 into
I want to get template content, inject it into a custom element with shadow DOM and apply styles to
span
insidetemplate
via::slotted
selector but this doesn't seem to wo- python - discord.py 重写 | 只允许一个命令的一个实例
- python-3.x - 使用 cx_Freeze 制作应用程序时没有名为“队列”的模块