什么是确定2D空间中n个点中的哪个点与点p最接近(最小的欧几里德距离)的精确方法是什么,参见附加的附加信息.
我目前在Python中执行此操作的方法是将所有距离存储在列表中然后运行
numpy.argmin(list_of_distances)
Run Code Online (Sandbox Code Playgroud)
然而,当计算m个点数p时,这有点慢.或者是吗?
我正在实现一个程序,该程序使用具有单例行为的共享实用程序类。
实用程序类的一个实例在主线程中创建并传递给所有其他实例化的对象:
SomeUtil util = new SomeUtil();
...
Foo foo = new Foo(util, arg1, arg2)
Bar bar = new Bar(util, arg3, arg4, arg5)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来实现这个(即设计模式)?
我注意到当我内联在类体本身中实现一个接口时,即.不在方法内,
Runnable r = new Runnable() {
@Override
public void run() {
// do something
}
};
Run Code Online (Sandbox Code Playgroud)
然后按CTRL+ SHIFT+ F(自动修复缩进),eclipse缩进方法很多:
Runnable r = new Runnable() {
@Override
public void run() {
// do something
}
};
Run Code Online (Sandbox Code Playgroud)
还有其他人遇到过吗?
对于我的聚类gui,我目前正在使用随机颜色进行聚类,因为我不知道手头会有多少个聚类.
在Python中,这看起来像:
import random
def randomColor():
return (random.random(),random.random(),random.random())
Run Code Online (Sandbox Code Playgroud)
但是,当我更新东西时,颜色会发生变化.
所以我倾向于拥有一个具有输入参数I的函数,例如
def nonrandomColor(i):
...
return color
Run Code Online (Sandbox Code Playgroud)
总是会为同一个I返回相同的颜色,同时保持生成任意多种颜色的能力.
答案不一定要用Python来表达,它更像是我感兴趣的总体布局.
我最近在文本生成软件的文本输出上做了很多功能测试,发现自己写了很多
assertTrue(actualString.contains(wantedString));
Run Code Online (Sandbox Code Playgroud)
但是,失败的消息是非描述性的
Expected [true], but was [false]
Run Code Online (Sandbox Code Playgroud)
另一种方法是将自定义失败消息包括为
String failMsg = String.format("Wanted string to contain: %s, Actual string: %s", wantedString, actualString);
assertTrue(failMsg, actualString.contains(wantedString));
Run Code Online (Sandbox Code Playgroud)
但是一直手动执行此操作感觉有点乏味.有没有更好的办法?
在车把模板中,我可以访问脚本标签内的车把参数,如
<script>
var aList = {{list}}
</script>
Run Code Online (Sandbox Code Playgroud)
模板是从express
with调用的
response.render('template', {list: [1, 2, 3]})
Run Code Online (Sandbox Code Playgroud) 我有一个函数,用于更新K-means算法中的质心(平均值).我运行了一个分析器,发现这个函数使用了大量的计算时间.
看起来像:
def updateCentroid(self, label):
X=[]; Y=[]
for point in self.clusters[label].points:
X.append(point.x)
Y.append(point.y)
self.clusters[label].centroid.x = numpy.mean(X)
self.clusters[label].centroid.y = numpy.mean(Y)
Run Code Online (Sandbox Code Playgroud)
所以我在思考,有没有更有效的方法来计算这些点的平均值?如果没有,是否有更优雅的方式来制定它?;)
编辑:
感谢所有精彩的回复!我想也许我可以累计计算平均值,使用类似的东西:
其中x_bar(t)是新均值,x_bar(t-1)是旧均值.
这会产生类似于此的函数:
def updateCentroid(self, label):
cluster = self.clusters[label]
n = len(cluster.points)
cluster.centroid.x *= (n-1) / n
cluster.centroid.x += cluster.points[n-1].x / n
cluster.centroid.y *= (n-1) / n
cluster.centroid.y += cluster.points[n-1].y / n
Run Code Online (Sandbox Code Playgroud)
它不是真的有效,但你认为这可能适用于一些tweeking?
我有一个很长的条件语句来决定对一对变量a和b采取什么操作.
action = 0 if (a==0) else 1 if (a>1 and b==1) else 2 if (a==1 and b>1) else 3 if (a>1 and b>1) else -1
Run Code Online (Sandbox Code Playgroud)
虽然这个语句的紧凑性(行;))很好,但它必须以更优雅的方式存在吗?
是否有一个Java库可以让我做比较操作,如
try {
verify(a).isEqualTo(b);
verify(a).isGreaterThan(b);
verify(a).contains(b);
catch (AssetionError e) {
..
}
Run Code Online (Sandbox Code Playgroud)
我在想番石榴,但找不到任何东西,也许我看起来不够努力;)
java ×4
python ×4
optimization ×2
assertions ×1
colors ×1
comparison ×1
conditional ×1
distance ×1
eclipse ×1
express ×1
guava ×1
if-statement ×1
indentation ×1
interface ×1
javascript ×1
junit ×1
numpy ×1
refactoring ×1
singleton ×1
string ×1