小编Jos*_*sen的帖子

在Matplotlib中从预先计数的数据绘制直方图

我想使用Matplotlib在已经预先计数的数据上绘制直方图.例如,假设我有原始数据

data = [1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 10]
Run Code Online (Sandbox Code Playgroud)

鉴于这些数据,我可以使用

pylab.hist(data, bins=[...])
Run Code Online (Sandbox Code Playgroud)

绘制直方图.

就我而言,数据已被预先计算并表示为字典:

counted_data = {1: 1, 2: 2, 3: 1, 4: 1, 5: 4, 6: 1, 10: 1}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想将这个预先计数的数据传递给直方图函数,让我可以控制箱宽,绘图范围等,就好像我已经将原始数据传递给它一样.作为一种解决方法,我将我的计数扩展到原始数据:

data = list(chain.from_iterable(repeat(value, count)
            for (value, count) in counted_data.iteritems()))
Run Code Online (Sandbox Code Playgroud)

counted_data包含数百万个数据点的计数时,这是低效的.

是否有更简单的方法使用Matplotlib从我预先计算的数据中生成直方图?

或者,如果最简单的条形图是预先装箱的数据,是否有一种方便的方法可以将我的每件商品计数"汇总"为分箱数量?

python matplotlib histogram

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

在IntelliJ IDEA中自动显示VCS注释

有没有办法让IntelliJ IDEA在我打开的每个文件的左边距中自动显示Git/VCS注释?现在,我可以通过右键单击左边距并选择Annotate或使用VCS -> Git -> Annotate菜单选项来启动它们.当我想连续查看几十个文件的注释时,这两个选项都很麻烦.

我正在使用IntelliJ Ultimate 12.1.3.

intellij-idea

25
推荐指数
3
解决办法
7902
查看次数

在Python中绘制有向图,以分别显示所有边

我正在使用Python来模拟在有向图上发生的过程.我想制作一个这个过程的动画.

我遇到的问题是大多数Python图形可视化库将成对的有向边组合成一个边.例如,NetworkX在显示下图时只绘制两条边,而我想分别显示四条边的每一条:

import networkx as nx
import matplotlib.pyplot as plt 

G = nx.MultiDiGraph()

G.add_edges_from([
    (1, 2),
    (2, 3),
    (3, 2),
    (2, 1),
])

plt.figure(figsize=(8,8))
nx.draw(G)
Run Code Online (Sandbox Code Playgroud)

NetworkX的输出;  平行边缘重叠,因此只显示两条线

我想显示这样的东西,每个平行边缘分开绘制:

期望的输出格式;  平行边缘分开绘制

R中的igraph中的R倒数边缘的问题似乎处理相同的问题,但是解决方案存在于R igraph库,而不是Python.

有没有一种简单的方法可以使用现有的Python图形可视化库生成这种样式的绘图?如果它可以支持多图,那将是一个奖励.

我愿意接受调用外部程序来生成图像的解决方案.我想生成一系列动画帧,因此解决方案必须自动化.

python graph-visualization

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

带参数的通用方法与带通配符的非泛型方法

根据Java Generics FAQ中的此条目,在某些情况下,泛型方法没有使用通配符类型的等效非泛型方法.根据那个答案,

如果方法签名使用多级通配符类型,则泛型方法签名与其通配符版本之间始终存在差异.

他们举了一个方法的例子<T> void print1( List <Box<T>> list),"需要一个相同类型的盒子列表".通配符版本void print2( List <Box<?>> list)"接受不同类型的盒子的异构列表",因此不等同.

您如何解释以下两种方法签名之间的差异:

 <T extends Iterable<?>> void f(Class<T> x) {}
                         void g(Class<? extends Iterable<?>> x) {}
Run Code Online (Sandbox Code Playgroud)

直观地说,似乎这些定义应该是等价的.但是,调用f(ArrayList.class)使用第一种方法编译,但g(ArrayList.class)使用第二种方法调用会导致编译时错误:

g(java.lang.Class<? extends java.lang.Iterable<?>>) in Test
    cannot be applied to (java.lang.Class<java.util.ArrayList>)
Run Code Online (Sandbox Code Playgroud)

有趣的是,可以使用彼此的参数调用这两个函数,因为以下编译:

class Test {
    <T extends Iterable<?>> void f(Class<T> x) {
        g(x);
    }
    void g(Class<? extends Iterable<?>> x) {
        f(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用javap -verbose Test,我可以看到它f()具有通用签名

<T::Ljava/lang/Iterable<*>;>(Ljava/lang/Class<TT;>;)V;
Run Code Online (Sandbox Code Playgroud)

并 …

java generics

18
推荐指数
1
解决办法
1330
查看次数

Spark:写入Avro文件

我在Spark,我有一个Avro文件的RDD.我现在想对该RDD进行一些转换并将其保存为Avro文件:

val job = new Job(new Configuration())
AvroJob.setOutputKeySchema(job, getOutputSchema(inputSchema))

rdd.map(elem => (new SparkAvroKey(doTransformation(elem._1)), elem._2))
   .saveAsNewAPIHadoopFile(outputPath, 
  classOf[AvroKey[GenericRecord]], 
  classOf[org.apache.hadoop.io.NullWritable], 
  classOf[AvroKeyOutputFormat[GenericRecord]], 
  job.getConfiguration)
Run Code Online (Sandbox Code Playgroud)

运行时,Spark会抱怨Schema $ recordSchema不可序列化.

如果我取消注释.map调用(并且只有rdd.saveAsNewAPIHadoopFile),则调用成功.

我在这做错了什么?

任何的想法?

serialization scala avro apache-spark

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

在Spark中排序时出现NotSerializableException

我正在尝试编写一个简单的流处理Spark作业,它将获取每个属于用户的消息列表(JSON格式),计算每个用户的消息并打印前十个用户.

但是,当我定义Comparator>对减少的计数进行排序时,整个过程会因抛出java.io.NotSerializableException而失败.

我对Spark的maven依赖:

<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.9.3</artifactId>
<version>0.8.0-incubating</version>
Run Code Online (Sandbox Code Playgroud)

我正在使用的Java代码:

public static void main(String[] args) {

    JavaSparkContext sc = new JavaSparkContext("local", "spark");

    JavaRDD<String> lines = sc.textFile("stream.sample.txt").cache();

    JavaPairRDD<String, Long> words = lines
        .map(new Function<String, JsonElement>() {
            // parse line into JSON
            @Override
            public JsonElement call(String t) throws Exception {
                return (new JsonParser()).parse(t);
            }

        }).map(new Function<JsonElement, String>() {
            // read User ID from JSON
            @Override
            public String call(JsonElement json) throws Exception {
                return json.getAsJsonObject().get("userId").toString();
            }

        }).map(new PairFunction<String, String, Long>() {
            // count each …
Run Code Online (Sandbox Code Playgroud)

java sorting notserializableexception apache-spark

7
推荐指数
1
解决办法
1941
查看次数

如何在火花中使用jni?

我想用jni在spark中调用我的c ++ lib.当我运行我的程序时,它显示java.lang.UnsatisfiedLinkError:java.library.path中没有hq_Image_Process,所以显然程序找不到我的hq_Image_Process.so.

在hadoop中,-files可以将xxx.so文件分发给slave,如下所示:

[hadoop@Master ~]$ hadoop jar JniTest3.jar -files /home/hadoop/Documents/java/jni1/bin/libFakeSegmentForJni.so FakeSegmentForJni.TestFakeSegmentForJni input output
Run Code Online (Sandbox Code Playgroud)

有没有办法像火花中的hadoop一样调用我的hq_Image_Process.so?我将不胜感激任何帮助.

java-native-interface java.library.path apache-spark

6
推荐指数
1
解决办法
5836
查看次数

不同的调用和地图一起抛出火花库中的NPE

我不确定这是否是一个错误,所以如果你做这样的事情

// d:spark.RDD[String]
d.distinct().map(x => d.filter(_.equals(x)))
Run Code Online (Sandbox Code Playgroud)

你会得到一个Java NPE.但是如果你collect马上做了distinct,一切都会好的.

我正在使用spark 0.6.1.

scala nullpointerexception apache-spark

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

如何在独立OS/X上设置运行spark的mesos

我想在Mac上测试Spark程序.Spark正在运行,我的spark scala程序编译:但运行时有一个库(mesos .so?)错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no mesos in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    at org.apache.mesos.MesosNativeLibrary.load(MesosNativeLibrary.java:46)
    at spark.SparkContext.<init>(SparkContext.scala:170)
    at com.blazedb.scala.ccp.spark.LoadRDD$.main(LoadRDD.scala:14)
Run Code Online (Sandbox Code Playgroud)

为了运行spark客户端程序,os/x除了spark服务器本身之外还需要什么设置?

macos scala mesos apache-spark

5
推荐指数
2
解决办法
6291
查看次数

如何使用Java有效地读取Hadoop(HDFS)文件中的第一行?

我的Hadoop集群上有一个大的CSV文件.该文件的第一行是"标题"行,由字段名称组成.我想对这个标题行进行操作,但我不想处理整个文件.此外,我的程序是用Java编写的,并使用Spark.

在Hadoop集群上只读取大型CSV文件的第一行的有效方法是什么?

java csv hadoop apache-spark

4
推荐指数
1
解决办法
2274
查看次数