在
trait Expr
case class Number(n: Int) extends Expr
case class Sum(e1: Expr, e2: Expr) extends Expr
object CaseExample {
def eval(e: Expr): Int = e match {
case Number(n) => n
case Sum(e1, e2) => eval(e1) + eval(e2)
}
def main(args: Array[String]) {
println(eval(Sum(Number(1), Number(2)))) //> 3
}
}
Run Code Online (Sandbox Code Playgroud)
还有相当多的语法糖.我得到的case是隐式创建两个对象
object Number extends Expr {
def apply(n: Int) = new Number(n)
}
object Sum extends Expr {
def apply(e1: Expr, e2: Expr) = new Sum(e1, e2)
} …Run Code Online (Sandbox Code Playgroud) 如何用一个sbt命令运行我的项目?我试过了
sbt run src/main/resources/mydata.txt
Run Code Online (Sandbox Code Playgroud)
添加后
mainClass in (Compile, run) := Some("com.mywebsite.MyExample")
mainClass in (Compile, packageBin) := Some("com.mywebsite.MyExample")
Run Code Online (Sandbox Code Playgroud)
到build.sbt,但是我得到了
[error] (run-main-0) java.lang.ArrayIndexOutOfBoundsException: 0
java.lang.ArrayIndexOutOfBoundsException: 0
at com.mywebsite.MyExample$.main(MyExample.scala:17)
at com.mywebsite.MyExample.main(MyExample.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Run Code Online (Sandbox Code Playgroud)
显然,该参数没有找到我args(0)在main方法中调用的方式。那我做错了什么,我该怎么做对呢?
我尝试导入 matplotlib,然后导入 skimage.io,但遇到了一些问题。我需要做什么?
import matplotlib
ImportError:
Could not load requested Qt binding. Please ensure that
PyQt4 >= 4.7 or PySide >= 1.0.3 is available,
and only one is imported per session.
Currently-imported Qt library: None
PyQt4 installed: False
PyQt5 installed: True
PySide >= 1.0.3 installed: True
Tried to load: ['pyqtdefault']
matplotlib.use('QT5Agg')
import matplotlib.pyplot as plt
from ggplot import *
import numpy as np
from scipy import stats
from pandas import DataFrame
import pandas as pd
import cv2
import os
from …Run Code Online (Sandbox Code Playgroud) 我有DataFrame(只是一个例子)
D = pd.DataFrame({i: {"name": str(i),
"vector": np.arange(i + i % 4, i + i % 4 + 10),
"sq": i ** 2,
"gp": i % 2} for i in range(10)}).T
gp name sq vector
0 0 0 0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 1 1 1 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
2 0 2 4 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
3 1 3 …Run Code Online (Sandbox Code Playgroud) 我想将我的pandas DataFrame分成组,然后在每个块上运行一个复杂的函数.复杂函数为每个块返回一个DataFrame,其中包含任意数量的列和列的名称以及任意数量的行.我希望在操作之后将这些结果DataFrame组合起来.在RI我能够做到这一点
library(tibble)
library(dplyr)
df = tribble(
~g, ~c1, ~c2,
"a", 1, 6,
"a", 2, 7,
"b", 3, 8,
"b", 4, 9,
"b", 5, 10
)
myfct <- function(x, y){
data.frame(c1 = x,
c2 = y,
res = c(x * y, x + y, x / y),
type = c('mult', 'add', 'div'))
}
df %>% group_by(g) %>% do(myfct(.$c1, .$c2))
Run Code Online (Sandbox Code Playgroud)
结果是
Source: local data frame [15 x 5]
Groups: g [2]
g c1 c2 res type
<chr> <dbl> <dbl> <dbl> <fctr> …Run Code Online (Sandbox Code Playgroud) 我有
x = np.arange(0, 4, 1)
y = np.arange(0, 4, 1)
Run Code Online (Sandbox Code Playgroud)
而且我要
array([[(0,0), (0,1), (0,2), (0,3)],
[(1,0), (1,1), (1,2), (1,3)],
[(2,0), (2,1), (2,2), (2,3)],
[(3,0), (3,1), (3,2), (3,3)]
])
Run Code Online (Sandbox Code Playgroud)
请注意,我想在最低级别上有元组!这不是3年级的数组!这是一个以元组为元素的 2 级数组!
数字 0 到 3 只是一个例子。在实际情况下,它将是浮动的。之后,我想使用这些浮点元组作为工厂函数的参数,该函数生成用对象替换这些元组的对象。
现在的问题是:如何获得这个元组数组?
我在 Numpy 中查看,如何压缩两个二维数组?但这不起作用,正如我的评论所揭示的那样。
我有一个索引列表:
idx = [1,4,5]
Run Code Online (Sandbox Code Playgroud)
和感兴趣的列表:
mylist = ['a','b','c','d','e','f']
Run Code Online (Sandbox Code Playgroud)
我想从mylist索引不在idx.
所以结果应该是:
['a','c','d']
Run Code Online (Sandbox Code Playgroud)
我也可以拆分mylist为['a','c','d']and ['b','e','f'],因为无论如何我都会使用它们。
一个 numpy 版本是可以的,尽管我现在实际上只有两个列表。
我只看到了结果是Scala双精度Java列表的示例.我得到了
def getDistance(): java.util.List[java.lang.Double] = {
val javadistance = distance.toList.asJava
javadistance
}
Run Code Online (Sandbox Code Playgroud)
但这仍然是一个包含Scala双打的Java列表(distance是同一类的成员getDistance).
我有一个包含 160 个 FLV 视频的文件夹,每个视频有 120 个大小为 152、360 的 RGB 颜色(3 个通道)帧,我想将它们加载到 numpy 数组中frames。我使用以下代码执行此操作:
import numpy as np
import cv2
import os
directory = "data/"
# frames = []
frames = np.empty(shape=(160 * 120, 152, 360,3), dtype=np.float32)
for file in os.listdir(directory):
if file.endswith(".flv"):
# Create a VideoCapture object and read from input file
cap = cv2.VideoCapture(os.path.join(directory, file))
# Read until video is completed
while (cap.isOpened()):
# Capture frame-by-frame
ret, frame = cap.read()
if ret == True:
# frames.append(frame.astype('float32') …Run Code Online (Sandbox Code Playgroud) 与使用纯 python 相比,使用 numba 会产生更快的程序:
现在看来,纯 python 上的 numba 甚至(大部分时间)都比 numpy-python 快,例如https://jakevdp.github.io/blog/2015/02/24/optimizing-python-with- numpy 和 numba/。
根据https://murillogroupmsu.com/julia-set-speed-comparison/,在纯 python 代码上使用的 numba 比在使用 numpy 的 python 代码上使用的速度快。这通常是真的吗?为什么?
在/sf/answers/1816668031/中解释了为什么纯 python 上的 numba 比 numpy-python 更快:numba 看到更多的代码并且有更多的方法来优化代码,而 numpy 只看到一小部分。
这是否回答了我的问题?在使用 numpy 时,我是否会妨碍 numba 完全优化我的代码,因为 numba 被迫使用 numpy 例程而不是找到更优化的方法?我曾希望 numba 会意识到这一点,如果它没有好处,就不要使用 numpy 例程。然后它会使用 numpy 例程,只是它是一个改进(毕竟 numpy 已经过很好的测试)。毕竟“对 NumPy 数组的支持是 Numba 开发的重点,目前正在进行广泛的重构和改进。”
我无法转换
'Schutzt\xc3\xbcren'.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)
下面的代码,但无法获取错误
UnicodeDecodeError:'ascii'编解码器无法解码位置7的字节0xc3:序数不在范围内(128)
我想得到
'Schutztüren'
Run Code Online (Sandbox Code Playgroud)
结果是。
python ×8
numpy ×4
scala ×3
pandas ×2
collections ×1
dplyr ×1
importerror ×1
java ×1
list ×1
matplotlib ×1
memory ×1
numba ×1
opencv ×1
performance ×1
r ×1
sbt ×1
utf-8 ×1