小编job*_*job的帖子

如何自动生成N"不同"的颜色?

我写下了两种方法来自动选择N种不同的颜色.它的工作原理是在RGB立方体上定义分段线性函数.这样做的好处是,如果这是你想要的,你也可以得到一个渐进的比例,但是当N变大时,颜色可以开始看起来相似.我还可以想象将RGB立方体均匀地细分为格子然后绘制点.有谁知道其他任何方法?我排除了定义一个列表然后只是循环通过它.我还应该说我一般不关心他们是否发生冲突或看起来不好看,他们只需要在视觉上截然不同.

public static List<Color> pick(int num) {
    List<Color> colors = new ArrayList<Color>();
    if (num < 2)
        return colors;
    float dx = 1.0f / (float) (num - 1);
    for (int i = 0; i < num; i++) {
        colors.add(get(i * dx));
    }
    return colors;
}

public static Color get(float x) {
    float r = 0.0f;
    float g = 0.0f;
    float b = 1.0f;
    if (x >= 0.0f && x < 0.2f) {
        x = x / 0.2f;
        r = 0.0f;
        g …
Run Code Online (Sandbox Code Playgroud)

java color-scheme color-picker colors

187
推荐指数
10
解决办法
12万
查看次数

为什么python中没有list.clear()方法?

灵感来自这个问题.

为什么python中没有list.clear()方法?我在这里发现了几个问题,说正确的方法是下面的一个,但没有人说过为什么不只是一个方法.

del lst[:]
lst[:] = []
Run Code Online (Sandbox Code Playgroud)

虽然它可能违背了"蟒蛇的禅",但有一种以上的做法,对我来说,使用"list.clear()"方法似乎更为明显.它也会与dicts和sets一致,两者都有.clear().

我遇到了一些关于python-dev和python-ideas的帖子,并没有得到明确的答案(见这里(2006)和这里(2009)).Guido有没有权衡呢?在过去的4 - 5年里,它只是一个尚未解决的争论点吗?

更新: list.clear()已添加到3.3中的python中 - 请参见此处

python list clear

39
推荐指数
3
解决办法
2万
查看次数

Python Matplotlib矩形binning

我有一系列(x,y)值,我想绘制使用python的matplotlib的二维直方图.使用hexbin,我得到这样的东西: alt text http://img121.imageshack.us/img121/1339/hexbin.png 但我正在寻找这样的东西: alt text http://img17.imageshack.us/ img17/1927/recthist.png 示例代码:

from matplotlib import pyplot as plt
import random

foo = lambda : random.gauss(0.0,1.0)

x = [foo() for i in xrange(5000)]
y = [foo() for i in xrange(5000)]

pairs = zip(x,y)

#using hexbin I supply the x,y series and it does the binning for me
hexfig = plt.figure()
hexplt = hexfig.add_subplot(1,1,1)
hexplt.hexbin(x, y, gridsize = 20)

#to use imshow I have to bin the data myself
def histBin(pairsData,xbins,ybins=None):
    if (ybins == …
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram

19
推荐指数
1
解决办法
1万
查看次数

访问最终局部变量比Java中的类变量更快吗?

我一直在寻找一些Java基本集合(的宝库,fastutil,HPPC)和我已经注意到,类变量有时声明为图案final的局部变量.例如:

public void forEach(IntIntProcedure p) {
    final boolean[] used = this.used;
    final int[] key = this.key;
    final int[] value = this.value;
    for (int i = 0; i < used.length; i++) {
        if (used[i]) {
          p.apply(key[i],value[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经完成了一些基准测试,看起来这样做会快一点,但为什么会这样呢?我试图理解如果函数的前三行被注释掉,Java将采取哪些不同的做法.

注意:这似乎与这个问题类似,但这是针对c ++的,并没有说明它们被声明的原因final.

java optimization micro-optimization

14
推荐指数
2
解决办法
5412
查看次数

在另一个方法中计算python方法调用

我实际上是在尝试用Java做这个,但我正在自学python的过程中,这让我想知道是否有一个简单/聪明的方法用包装器或其他东西来做这件事.

我想知道在另一个方法中调用特定方法的次数.例如:

def foo(z):
    #do something
    return result

def bar(x,y):
    #complicated algorithm/logic involving foo
    return foobar
Run Code Online (Sandbox Code Playgroud)

所以对于每次使用各种参数调用bar,我想知道foo被调用了多少次,也许是这样的输出:

>>> print bar('xyz',3)
foo was called 15 times
[results here]
>>> print bar('stuv',6)
foo was called 23 times
[other results here]
Run Code Online (Sandbox Code Playgroud)

编辑:我意识到我可以在栏内打一个计数器并在我返回时将其转储,但如果有一些魔法可以用包装来完成同样的事情,那将会很酷.这也意味着我可以在其他地方重用相同的包装器,而无需修改方法中的任何代码.

python profiling

12
推荐指数
2
解决办法
9672
查看次数

在Python中按排序顺序从排序的迭代器中产生?

是否有更好的方法将一堆已排序的迭代器合并/整理成一个,以便按排序顺序生成项目?我认为下面的代码可以工作,但我觉得有一种更清晰,更简洁的方法,我错过了.

def sortIters(*iterables, **kwargs):
    key = kwargs.get('key', lambda x : x)
    nextElems = {}
    currentKey = None
    for g in iterables:
        try:
            nextElems[g] = g.next()
            k = key(nextElems[g])
            if currentKey is None or k < currentKey:
                currentKey = k
        except StopIteration:
            pass #iterator was empty
    while nextElems:
        minKey = None
        stoppedIters = set()
        for g, item in nextElems.iteritems():
            k = key(item)
            if k == currentKey:
                yield item
                try:
                    nextElems[g] = g.next()
                except StopIteration:
                    stoppedIters.add(g)
            minKey = k if minKey is …
Run Code Online (Sandbox Code Playgroud)

python sorting iterator

11
推荐指数
1
解决办法
3118
查看次数

运行Jar时的当前工作目录

我创建了一个应用程序,它是一个可运行的jar(使用maven-assembly插件),带有几个用户可配置的资源,它们位于同一目录中(图像,属性等)

从命令行运行jar时java -jar ...,当前目录正如您所期望的那样.问题是在某些操作系统(Ubuntu 11.04)上,如果只需双击jar启动应用程序,那么当前工作目录就是主目录.

是否有一种获取jar所在的当前目录的首选方法,或者是另一种方法来访问jar旁边的外部资源?

java jar

8
推荐指数
1
解决办法
7948
查看次数

Java并行工作迭代器?

我正在寻找一个类,我可以覆盖一个方法来完成工作,并像迭代器一样返回结果.像这样的东西:

ParallelWorkIterator<Result> itr = new ParallelWorkIterator<Result>(trials,threads) {

  public Result work() {
    //do work here for a single trial...
    return answer;
  }

};
while (itr.hasNext()) {
  Result result = itr.next();
  //process result...
}
Run Code Online (Sandbox Code Playgroud)

这主要用于monte carlo模拟之类的东西,但我不想每次都要处理设置线程池和管理返回线程.我推出了自己的课程,希望能够完成这一课,但我对此并不充分,并且认为我会检查这样的事情是否已经存在.

编辑:要清楚,我希望它在后台运行并在每个工作方法返回后排队结果,直到所有试验都完成.因此,下一个方法可能会等待返回,直到队列中出现结果.

java concurrency multithreading iterator

5
推荐指数
1
解决办法
5260
查看次数

自动将每个节点的最大映射任务数设置为核心数?

我正在设置一个hadoop集群,其中节点都是相当异构的,即它们每个都有不同数量的核心.目前我必须手动编辑mapred-site.xml每个节点以填写{cores}:

<property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>{cores}</value>
</property>
Run Code Online (Sandbox Code Playgroud)

添加新节点时,有更简单的方法吗?大多数其他值都是默认值,并且最大映射任务是从节点到节点的唯一变化.

hadoop

5
推荐指数
1
解决办法
2502
查看次数

C++中除法和乘法特殊排序的原因

我正在将一些c ++代码移植到java中,并且我一直在运行实例,其中编写它的人不断执行以下操作:

double c = (1.0/(a+1.0)*pow(b, a+1.0));
double d = (1./(integral(gamma, dmax)-integral(gamma, dmin)))*(integral(gamma+1, dmax)-integral(gamma+1, dmin));
Run Code Online (Sandbox Code Playgroud)

代替:

double c = pow(b, a+1.0)/(a+1.0);
double d = (integral(gamma+1, dmax)-integral(gamma+1, dmin))/(integral(gamma, dmax)-integral(gamma, dmin));
Run Code Online (Sandbox Code Playgroud)

第二个似乎更清楚,除非我对C++中的操作顺序错了,否则他们应该做同样的事情.有没有理由做第一个而不是第二个?我唯一能想到的就是精确的一些奇怪的情况.

c++ math double

3
推荐指数
1
解决办法
386
查看次数