我想使用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从我预先计算的数据中生成直方图?
或者,如果最简单的条形图是预先装箱的数据,是否有一种方便的方法可以将我的每件商品计数"汇总"为分箱数量?
有没有办法让IntelliJ IDEA在我打开的每个文件的左边距中自动显示Git/VCS注释?现在,我可以通过右键单击左边距并选择Annotate或使用VCS -> Git -> Annotate菜单选项来启动它们.当我想连续查看几十个文件的注释时,这两个选项都很麻烦.
我正在使用IntelliJ Ultimate 12.1.3.
我正在使用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)

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

R中的igraph中的R倒数边缘的问题似乎处理相同的问题,但是解决方案存在于R igraph库,而不是Python.
有没有一种简单的方法可以使用现有的Python图形可视化库生成这种样式的绘图?如果它可以支持多图,那将是一个奖励.
我愿意接受调用外部程序来生成图像的解决方案.我想生成一系列动画帧,因此解决方案必须自动化.
根据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)
并 …
我在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),则调用成功.
我在这做错了什么?
任何的想法?
我正在尝试编写一个简单的流处理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) 我想用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?我将不胜感激任何帮助.
我不确定这是否是一个错误,所以如果你做这样的事情
// 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.
我想在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服务器本身之外还需要什么设置?
我的Hadoop集群上有一个大的CSV文件.该文件的第一行是"标题"行,由字段名称组成.我想对这个标题行进行操作,但我不想处理整个文件.此外,我的程序是用Java编写的,并使用Spark.
在Hadoop集群上只读取大型CSV文件的第一行的有效方法是什么?