我想在 Scala 中构建我的项目,然后在 Python 脚本中使用它来进行数据黑客攻击(作为模块或类似的东西)。我已经看到有多种方法可以使用 Jython 将 python 代码集成到 JVM 语言中(尽管只有 Python 2 项目)。但我想做的是相反的。我在网上没有找到如何执行此操作的信息,但奇怪的是这应该是不可能的。
我将构建一个密集数据操作的程序(使用 Scala 或 Python - 尚未决定)。我看到两种市长的做法:
我不确定,但第一种方法可能更像函数式编程,第二种方法更像 OOP,对吗?顺便说一句,我喜欢函数式编程和 OOP(有人说它们是对立的,但 Odersky 尽力用 Scala 来反驳这一点)。
我更喜欢第二种方法,因为
但是,我担心如果我有很多数据(我确实有),我会消耗很多内存,因为该方法可能必须被实例化很多次。
引导我:我应该选择哪种方法?
这是一个粗略的 DataObject 类:
class DataObject {
List datavalues
def mymethod(){
...
}
}
Run Code Online (Sandbox Code Playgroud) 据我所知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根据我的理解,这根本不是目的- 它不是一个特征,而是实现它以便能够采用非交换函数的必要性.这七种方法的简单例子是什么?
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:我试图将关于如何咖喱以及是类还是对象的问题分开 - 似乎不太好,就在这里。
非常相似,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。
我有一个数据框 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)
与object列file,我想转换为字符串:
我试过了
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。
如何在 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) 我正在尝试在 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 时,它说下载失败(没有更多信息)。我应该怎么办?
通过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) 我收到警告
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) 在我的sbt项目中,我有一些文件,我不想与同事分享,因为它们是个人笔记和类似的东西.我想要他们.gitignore.我怎样才能做到这一点.我personal在项目中放置了一个文件夹,并在那里添加了一个.gitignore
../personal/
Run Code Online (Sandbox Code Playgroud)
我希望从git中隐藏文件夹个人(包括负责的.gitignore),但似乎这对git无效.我怎样才能做到这一点?
此外/个人/不能像希望的那样工作.
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