小编Mak*_*e42的帖子

如何从Python调用scala?

我想在 Scala 中构建我的项目,然后在 Python 脚本中使用它来进行数据黑客攻击(作为模块或类似的东西)。我已经看到有多种方法可以使用 Jython 将 python 代码集成到 JVM 语言中(尽管只有 Python 2 项目)。但我想做的是相反的。我在网上没有找到如何执行此操作的信息,但奇怪的是这应该是不可能的。

python scala

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

方法是否使用类实例化,消耗大量内存(在 Scala 中)?

情况

我将构建一个密集数据操作的程序(使用 Scala 或 Python - 尚未决定)。我看到两种市长的做法:

  1. 方法:定义数据的集合。写我的函数。通过函数发送整个数据集。
  2. 方法:定义一个表示单个数据实体的数据类,并将方法(类成员)编码到数据类中。应该灵活的部分方法通过 Scala 函数或 Python lambda 发送到方法。

副题

我不确定,但第一种方法可能更像函数式编程,第二种方法更像 OOP,对吗?顺便说一句,我喜欢函数式编程和 OOP(有人说它们是对立的,但 Odersky 尽力用 Scala 来反驳这一点)。

主要问题

我更喜欢第二种方法,因为

  1. 对我来说似乎更简洁。
  2. 它使在无共享架构大数据设置中分发程序变得更容易,因为它遵循数据本地性原则为数据带来功能,而不是将数据引入功能。

但是,我担心如果我有很多数据(我确实有),我会消耗很多内存,因为该方法可能必须被实例化很多次。

  1. 问题: Scala/JVM 是这样吗?如果不是,如何解决?
  2. 问题:这对 Python 是真的吗——如果不是,它是如何解决的?

后续问题

引导我:我应该选择哪种方法?

更多上下文

  • 我有很多数据(数百万,可能是数十亿的数据对象)
  • 我没有那么多功能要实现。为了给出一个大概的数字,让我们说大约 10。
  • 不过,我希望对这些方法有很多调用。
  • 假设每个数据实体有 100 次调用,那么整个程序将有 100 * 100 万次调用。
  • 我的数据类代表单个实体,而不是整个数据集。
  • 我担心的是,每次实例化我的 DataObject 类时,都需要复制该方法的代码,这会消耗大量内存和处理能力。我不知道 JVM 和 Python 的内部在这方面是如何工作的,以及这是否属实——这就是我要问的。

这是一个粗略的 DataObject 类:

class DataObject {

    List datavalues

    def mymethod(){
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

python oop jvm scala

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

聚合概括折叠和折叠概括如何减少?

据我所知aggregate,fold这是一种概括,反过来又是一种概括reduce.

类似地combineByKey,aggregateByKey这是一种概括,其反过来又是概括,foldByKey而反过来又是概括reduceByKey.

但是,我很难找到这七种方法中的每种方法的简单例子,而这些方法又可以仅由它们表达,而不是它们不那么通用的版本.例如,我找到了http://blog.madhukaraphatak.com/spark-rdd-fold/给出一个例子fold,但我也能够reduce在相同的情况下使用.

到目前为止我发现了什么:

  • 我读到更通用的方法可以更有效,但这将是一个非功能性的要求,我想得到无法用更具体的方法实现的示例.
  • 我也读了如传递给函数fold只要是关联的,而一个reduce必须是可交换另外:/sf/answers/1761115331/(不过,我还是不知道有什么好的简单例如.)在/sf/answers/1864514991/中,我读到折叠需要两个属性才能保持...
  • 我们可以将零值视为一个特征(例如fold结束reduce),如"添加所有元素并添加3"并使用3作为零值,但这会产生误导,因为每个分区都会添加3个,而不仅仅是一旦.此外,fold根据我的理解,这根本不是目的- 它不是一个特征,而是实现它以便能够采用非交换函数的必要性.

这七种方法的简单例子是什么?

scala apache-spark

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

Scala 函数作为对象与类

trait MyFunctionTrait extends ((Int, Int) => Double)

class MyFunction1 extends MyFunctionTrait {
   override def apply(a: Int, b: Int) => Double = a/b 
}

object MyFunction2 extends MyFunctionTrait {
   override def apply(a: Int, b: Int) => Double = a/b 
}
Run Code Online (Sandbox Code Playgroud)

我不完全确定如何使用哪一个。区别是如何运行它们?

scala> val f = new MyFunction1
f: MyFunction1 = <function2>

scala> f(1,2)
res50: Double = 0.0

scala> MyFunction2(1,2)
res48: Double = 0.0
Run Code Online (Sandbox Code Playgroud)

我确实知道单例对象和类之间的区别是什么。我想知道在定义函数的特殊情况下的用例。文章中解释了函数,但我已经看到它被编程为一个类和一个对象,所以我想知道最佳实践是什么时候以及为什么。

在我的特定情况下,我想以柯里化风格将另一个函数作为函数的参数,然后MyFunction根据他们获得的函数来做略有不同的事情:如何编写柯里化 Scala 函数特征?

请回答1)一般情况,2)特殊情况。

PS:我试图将关于如何咖喱以及是类还是对象的问题分开 - 似乎不太好,就在这里。

scala

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

Keras + TensorFlow:“模块'tensorflow'没有属性'merge_all_summaries'”

非常相似,Keras + tensorflow给出了错误“没有属性‘control_flow_ops’”,从卷积自动编码例如从https://blog.keras.io/building-autoencoders-in-keras.html我得到的错误

[...]lib/python3.5/site-packages/keras/callbacks.py in _set_model(self, model)
    478                     tf.histogram_summary('{}_out'.format(layer),
    479                                          layer.output)
--> 480         self.merged = tf.merge_all_summaries()
    481         if self.write_graph:
    482             if parse_version(tf.__version__) >= parse_version('0.8.0'):

AttributeError: module 'tensorflow' has no attribute 'merge_all_summaries'
Run Code Online (Sandbox Code Playgroud)

我试过了

import tensorflow as tf
tf.merge_all_summaries = tf
Run Code Online (Sandbox Code Playgroud)

但这没有用。我该怎么办?

AttributeError中:“模块”对象没有属性“ merge_all_summaries”,其中提到了错误。我也有版本1.0.0。但是,解决方案是什么?我不想降级TensorFlow。

python keras tensorflow

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

熊猫:将列强制转换为字符串不起作用

我有一个数据框 resultstatsDF

resultstatsDF = DataFrame({'a': [1,2,3,4,5]})
resultstatsDF['file'] = 'asdf'
resultstatsDF.dtypes
a        int64
file    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

objectfile,我想转换为字符串:

我试过了

resultstatsDF = resultstatsDF.astype({'file': str})
resultstatsDF['file'] = resultstatsDF['file'].astype(str)
resultstatsDF['file'] = resultstatsDF['file'].to_string
resultstatsDF['file'] = resultstatsDF.file.apply(str)
resultstatsDF['file'] = resultstatsDF['file'].apply(str)
Run Code Online (Sandbox Code Playgroud)

但是无论我做什么,当我与

resultstatsDF.dtypes
Run Code Online (Sandbox Code Playgroud)

该列file仍然是tpye object

python pandas

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

dplyr 流中参考当前 data.frame

如何在 dpylr 流中引用当前的 data.frame?举个例子,在

library(dplyr)

myresults = tribble(
  ~dataset_name, ~method_group, ~method, ~value,
  'iris',        'other',       'a',     1,
  'wine',        'other',       'b',     2,
  'iris',        'mine',        'c',     3,
  'wine',        'mine',        'd',     4
)

myresults %>%
  mutate(dataset_name='datasets aggregated') %>%
  bind_rows(XXX %>% filter(method=='c') %>% mutate(method_group = 'other'))
Run Code Online (Sandbox Code Playgroud)

我想将当前的 data.frame 与其自身进行行绑定。我应该写什么来代替 XXX ?

在函数中do()答案似乎是.。尽管这不是很优雅,而且我不想使用 do,但我设法获得了所需的结果

myresults %>%
  mutate(dataset_name='datasets aggregated') %>%
  do(bind_rows(data.frame(.), data.frame(.) %>% filter(method=='c') %>% mutate(method_group = 'other')))
Run Code Online (Sandbox Code Playgroud)

但这不太好。

我的 R 版本是:

> R.version
               _                           
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

如何安装 MinGW64(所有方法都不起作用)

我正在尝试在 Windows 10 上安装 MinGW64。这是我尝试过的:

方法一

通过http://mingw-w64.org/doku.php

我访问http://mingw-w64.org/doku.php/download/win-builds,然后从那里访问http://win-builds.org/doku.php/download_and_installation_from_windows,在那里我下载了Win-builds 1.5.0 。我运行 exe 并让它安装所有内容。当它安装 mingw64 时,它说下载失败(没有更多信息)。我应该怎么办?

方法2

通过https://sourceforge.net/projects/mingw-w64/

我还从https://sourceforge.net/projects/mingw-w64/下载了 mingw-w64-v7.0.0 ,提取了 zip,但不知道如何处理内容:

13.02.2020  13:37                   .gitignore
13.02.2020  13:37            31.032 aclocal.m4
13.02.2020  13:37             2.398 AUTHORS
13.02.2020  13:37    <DIR>          build-aux
13.02.2020  13:37               625 config.h.in
13.02.2020  13:37           123.961 configure
13.02.2020  13:37             3.268 configure.ac
13.02.2020  13:37             2.326 COPYING
13.02.2020  13:37    <DIR>          COPYING.MinGW-w64
13.02.2020  13:37    <DIR>          COPYING.MinGW-w64-runtime
13.02.2020  13:37             2.245 DISCLAIMER
13.02.2020  13:37               454 DISCLAIMER.PD
13.02.2020  13:37               745 Makefile.am
13.02.2020  13:37 …
Run Code Online (Sandbox Code Playgroud)

windows mingw-w64

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

FutureWarning get_params 来自 scikit-learn

我收到警告

File "[...]\lib\threading.py", line 890, in _bootstrap
  self._bootstrap_inner()
File "[...]\lib\threading.py", line 932, in _bootstrap_inner
  self.run()
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 216, in run
  self._on_run()
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydev_bundle\pydev_console_commands.py", line 30, in _on_run
  values.append(pydevd_thrift.var_to_struct(var_obj, name, evaluate_full_value=True))
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_thrift.py", line 305, in var_to_struct
  value = format % v
File "[...]\lib\site-packages\sklearn\base.py", line 263, in __repr__
  repr_ = pp.pformat(self)
File "[...]\lib\pprint.py", line 153, in pformat
  self._format(object, sio, 0, 0, {}, 0)
File "[...]\lib\pprint.py", line 170, in _format
  rep = self._repr(object, context, level) …
Run Code Online (Sandbox Code Playgroud)

python warnings scikit-learn

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

.gitignore的相对父目录路径

在我的sbt项目中,我有一些文件,我不想与同事分享,因为它们是个人笔记和类似的东西.我想要他们.gitignore.我怎样才能做到这一点.我personal在项目中放置了一个文件夹,并在那里添加了一个.gitignore

 ../personal/
Run Code Online (Sandbox Code Playgroud)

我希望从git中隐藏文件夹个人(包括负责的.gitignore),但似乎这对git无效.我怎样才能做到这一点?

此外/个人/不能像希望的那样工作.

git

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

标签 统计

python ×5

scala ×4

apache-spark ×1

dplyr ×1

git ×1

jvm ×1

keras ×1

mingw-w64 ×1

oop ×1

pandas ×1

r ×1

scikit-learn ×1

tensorflow ×1

warnings ×1

windows ×1