小编blu*_*e10的帖子

有没有办法使用数字类型作为对象键?

似乎当我在对象中使用数字类型作为键名时,它总是被转换为字符串.反正有没有把它作为数字存储?正常的类型转换似乎不起作用.

例:

var userId = 1;
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);
Run Code Online (Sandbox Code Playgroud)

目录输出:

{
    '1': 'a value'
}
Run Code Online (Sandbox Code Playgroud)

想要的是这个:

{
    1: 'a value'
}
Run Code Online (Sandbox Code Playgroud)

建议吗?

谢谢

javascript types key numeric object

70
推荐指数
5
解决办法
6万
查看次数

Apache Beam相对于Spark/Flink进行批处理有什么好处?

Apache Beam支持多个运行后端,包括Apache Spark和Flink.我熟悉Spark/Flink,我试图看到Beam的批处理优缺点.

看一下Beam字数统计示例,它感觉它与原生的Spark/Flink等价物非常相似,可能有一个稍微冗长的语法.

我目前没有看到为这样的任务选择Beam over Spark/Flink的一大好处.到目前为止我能做的唯一观察:

  • Pro:不同执行后端的抽象.
  • Con:这种抽象的代价是对Spark/Flink中执行的内容的控制较少.

是否有更好的例子突出了梁模型的其他优点/缺点?是否有关于失控如何影响性能的信息?

请注意,我并不是要求在流方面存在差异,这些问题本文中已部分涵盖并在本文中进行了总结(由于Spark 1.X而过时).

apache-spark apache-flink apache-beam

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

如何在setuptools项目的pyproject.toml中引用requirements.txt?

我正在尝试将基于setuptools的项目从传统配置迁移setup.py到现代pyproject.toml配置。

同时,我希望保持基于 的完善工作流程pip-compile,即 arequirements.in被编译为 a requirements.txt(当然对于最终用户/非库项目)。由于完全透明,这具有重要的好处:

  • 由于固定了依赖项的完全传递闭包,因此安装可实现 100% 可重现。
  • 更好地理解依赖传递闭包中的依赖冲突。

因此,我不想pyproject.toml通过dependencies = []列表直接在内部维护依赖项,而是在pip-compiled托管的外部维护requirements.txt

这让我想知道:有没有一种方法可以requirements.txtpyproject.toml配置中引用文件,而不必回退到setup.py脚本?

python pip setuptools pyproject.toml

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

matplotlib:分组箱图

有没有办法在matplotlib中对boxplots进行分组?

假设我们有三个组"A","B"和"C",我们想为每个组创建"苹果"和"橙子"的箱线图.如果无法直接进行分组,我们可以创建所有六种组合并将它们并排放置.可视化分组的最简单方法是什么?我试图避免将刻度标签设置为"A + apples"之类的东西,因为我的场景涉及的名称比"A"长得多.

python matplotlib boxplot

54
推荐指数
5
解决办法
10万
查看次数

访问/初始化和更新可变映射中的值

考虑使用可变映射来跟踪事件/计数的简单问题,即:

val counts = collection.mutable.Map[SomeKeyType, Int]()
Run Code Online (Sandbox Code Playgroud)

我目前增加计数的方法是:

counts(key) = counts.getOrElse(key, 0) + 1
// or equivalently
counts.update(key, counts.getOrElse(key, 0) + 1)
Run Code Online (Sandbox Code Playgroud)

这在某种程度上感觉有点笨拙,因为我必须指定两次密钥.在性能方面,我也希望key在地图中找到两次,我想避免.有趣的是,如果Int提供某种机制来修改自身,就不会发生这种访问和更新问题.从提供函数IntCounter类更改increment为例如允许:

// not possible with Int
counts.getOrElseUpdate(key, 0) += 1
// but with a modifiable counter
counts.getOrElseUpdate(key, new Counter).increment
Run Code Online (Sandbox Code Playgroud)

不知何故,我总是期望在可变映射中具有以下功能(有点类似transform但没有返回新集合和具有默认值的特定键):

// fictitious use
counts.updateOrElse(key, 0, _ + 1)
// or alternatively
counts.getOrElseUpdate(key, 0).modify(_ + 1)
Run Code Online (Sandbox Code Playgroud)

但据我所知,这种功能并不存在.具有这样的f: A => A就地修改可能性一般(性能和语法方面)是否有意义?可能我只是在这里遗漏了一些东西...我想必须有一些更好的解决方案来解决这个问题,不需要这样的功能吗?

更新:

我应该澄清我已经知道withDefaultValue但问题仍然是相同的:执行两次查找仍然是一次查询的两倍,无论是否是O(1)操作.坦率地说,在很多情况下,我会非常乐意实现因子2的加速.显然,修改闭包的构造通常可以移动到循环之外,所以这不是一个大问题,而不是运行操作不必要两次.

dictionary scala

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

为什么scala actor在2.10中被弃用了?

我只是在比较不同的scala actor实现,现在我想知道在2.10中弃用现有scala actor实现并用Akka实现替换默认actor的动机是什么?迁移指南和第一个公告都没有给出任何解释.

根据比较,两种解决方案的不同之处在于保持两种解决方案都是有益的.因此,我想知道导致这一决定的现有实施是否存在任何重大问题?换句话说,这是技术还是政治决定?

scala actor akka scala-2.10

21
推荐指数
1
解决办法
4377
查看次数

Scala:收集不可变状态的更新/更改

我目前正在尝试将更多功能的编程风格应用于涉及低级(基于LWJGL)的GUI开发的项目.显然,在这种情况下,需要携带很多状态,这在当前版本中是可变的.我的目标是最终拥有一个完全不可变的状态,以避免状态变化作为副作用.我研究了scalaz的镜头和状态monad一段时间,但我主要担心的是:所有这些技术都依赖于写时复制.由于我的州有大量的田地和一些相当大的田地,我担心表现.

据我所知,修改不可变对象的最常用方法是使用生成的copy方法case class(这也是镜头所做的内容).我的第一个问题是,这种copy方法是如何实际实现的?我用以下类进行了一些实验:

case class State(
  innocentField: Int, 
  largeMap: Map[Int, Int], 
  largeArray: Array[Int]
)
Run Code Online (Sandbox Code Playgroud)

标杆管理,并通过查看输出-Xprof,它看起来像更新someState.copy(innocentField = 42)实际进行深拷贝和我观察显著性能下降,当我增加的大小largeMaplargeArray.我某种程度上期望新构造的实例共享原始状态的对象引用,因为内部引用应该只传递给构造函数.我可以以某种方式强制或禁用默认的这种深度复制行为copy吗?

在思考写时复制问题时,我想知道FP中是否存在更多通用的解决方案,它以一种增量方式存储不可变数据的变化(在"收集更新"或"收集"的意义上)变化").令我惊讶的是我找不到任何东西,所以我尝试了以下方法:

// example state with just two fields
trait State {
  def getName: String
  def getX: Int

  def setName(updated: String): State = new CachedState(this) {
    override def getName: String = updated
  }
  def setX(updated: Int): State = new CachedState(this) {
    override def getX: Int = updated
  } …
Run Code Online (Sandbox Code Playgroud)

state design-patterns functional-programming scala immutability

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

解决线程局部gc限制的常见模式?

在我学习Nim的过程中,我正在研究Nim的并发编程方法.我已经看到了一些关于线程局部垃圾收集限制的评论(例如这里那里),但我仍然没有完全看到这一点的所有含义.

我想知道在Nim中是否存在某种完善的"设计模式"如何处理这些限制?也许有可能考虑一个需要线程间共享/交互的典型示例,并为这样的问题展示可能的惯用解决方案?

到目前为止,我自己试图找到一个好的解决方案并没有真正成功,并导致了这个更具体的问题TChannel.

concurrency garbage-collection nim-lang

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

如何规避Python的os.path.commonprefix的谬误?

我的问题是找到给定文件集的公共路径前缀.

从字面上看,我期待"os.path.commonprefix"可以做到这一点.不幸的是,commonprefix位于其中的事实path相当具有误导性,因为它实际上将搜索字符串前缀.

对我来说问题是,如何才能真正解决路径?在这个(相当高的评级)答案中简要提到了这个问题,但仅作为附注并且提议的解决方案(对commonprefix的输入附加斜线)imho存在问题,因为它将失败例如:

os.path.commonprefix(['/usr/var1/log/', '/usr/var2/log/'])
# returns /usr/var but it should be /usr
Run Code Online (Sandbox Code Playgroud)

为了防止其他人陷入同一个陷阱,可能值得在一个单独的问题中讨论这个问题:是否有一个简单/可移植的解决方案,不依赖于对文件系统的讨厌检查(即访问结果) commonprefix并检查它是否是一个目录,如果没有返回os.path.dirname结果)?

python path prefix

18
推荐指数
3
解决办法
3733
查看次数

如何在散景图中旋转X轴标签?

我刚刚开始使用Bokeh.下面我创建一些用于rect图的 args .

x_length = var_results.index * 5.5
Run Code Online (Sandbox Code Playgroud)

将指数乘以5.5可以让我在标签之间留出更多空间.

names = var_results.Feature.tolist()
y_length = var_results.Variance
y_center = var_results.Variance/2
Run Code Online (Sandbox Code Playgroud)

var_results是一个Pandas数据帧,具有典型的,顺序的,非重复索引.var_results还有一个列Features是非重复名称的字符串,最后它有一个Variancedtype float 的列.

r = figure(x_range = names, 
           y_range = (-0.05,.3), 
           active_scroll = 'wheel_zoom', 
           x_axis_label = 'Features', 
           y_axis_label = 'Variance')



r.rect(x_length, 
       y_center, 
       width=1, 
       height=y_length, 
       color = "#ff1200")
output_notebook()
show(r)
Run Code Online (Sandbox Code Playgroud)

我基本上是用矩形制作条形图.Bokeh似乎非常可定制.但是我的图表在边缘看起来很粗糙.

在此输入图像描述

正如您所看到的,在图表下方和X轴标题"特征"上方有一个丑陋的污迹.这是标签标题(技术上是矩形标题).如何为标签创建空间并将其旋转到45度,以便它们可读,而不仅仅是重叠的混乱?

python bar-chart pandas bokeh

18
推荐指数
2
解决办法
9341
查看次数