小编Rap*_*oth的帖子

JNA与Fortran假设大小数组

我有一个Fortran子程序采用假定的大小数组:

subroutine sub(arr)
  implicit none
  double precision arr(*)
end subroutine
Run Code Online (Sandbox Code Playgroud)

我使用JNA从Java进行本机调用,Fortran子例程被编译为共享库mylib.so:

import com.sun.jna.Library;
import com.sun.jna.Native;

public class Wrapper {
    public interface MyLib extends Library {
        public void sub_(double[] arr);
    }

    public static void main(String[] args) {
        System.setProperty("jna.library.path", ".");
        MyLib lib = (MyLib) Native.loadLibrary("mylib.so", MyLib.class);
        double[] myarr = new double[10];
        lib.sub_(myarr);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法得到(在Fortran子程序中)我传递给这个子程序的数组的大小而不传递实际大小(在这种情况下为10)作为附加参数?

我尝试过(Fortran)print*, size(arr),但这会产生编译错误:

   print*,size(arr)
              1
Error: The upper bound in the last dimension must appear in the reference to the assumed size array ‘arr’ …
Run Code Online (Sandbox Code Playgroud)

arrays fortran jna

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

Spark UDF空处理

我正在努力处理在由浮点数结构组成的数据帧(源自配置单元表)上运行的UDF中的空值:

数据框(points)具有以下架构:

root
 |-- point: struct (nullable = true)
 |    |-- x: float (nullable = true)
 |    |-- y: float (nullable = true)
Run Code Online (Sandbox Code Playgroud)

例如,我要计算x和y的总和。请注意,我不“处理”空值在下面的例子,但我希望能够在我的UDF检查是否pointx或者ynull

第一种方法:

val sum = udf((x:Float,y:Float) => x+y)

points.withColumn("sum",sum($"point.x",$"point.y"))
Run Code Online (Sandbox Code Playgroud)

如果该struct点为null,则此方法不起作用,在这种情况下,永远不会评估udf(永远不会执行udf中的代码!),结果为null。另外,我无法检查xy为null,因为Floats在scala中不能为null。

第二种方法:

val sum = udf((pt:Row) => pt.getFloat(0)+pt.getFloat(1))
points.withColumn("sum",sum($"point"))
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我可以pt在udf中检查是否为空,但是我可以检查x并且y因为Floats不能为空。NullPointerException在这种情况下,我得到一个。

如何编写udf win,可以检查struct以及x和y是否为null?

我正在使用spark 1.6.1

更新:与这个问题相反,我在处理浮点数而不是字符串(scala中的字符串可以为null,而浮点数则不是)

scala apache-spark udf

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

Java convert UTC / CET time

I want to convert a given date time (which is a utc date time) to the corresponding date time in CET with a proper mapping of the european summer/winter time switch (daylight saving time). I managed to to the opposite (CET to UTC) using java.time:

public static LocalDateTime cetToUtc(LocalDateTime timeInCet) {
    ZonedDateTime cetTimeZoned = ZonedDateTime.of(timeInCet, ZoneId.of("CET"));
    return cetTimeZoned.withZoneSameInstant(ZoneOffset.UTC).toLocalDateTime();
}
Run Code Online (Sandbox Code Playgroud)

But I fail to go the opposite way:

public static LocalDateTime utcToCet(LocalDateTime timeInUtc) {
     ZonedDateTime cetTimeZoned = ZonedDateTime.of(timeInUtc,ZoneId.of("UTC"));
     return cetTimeZoned.withZoneSameInstant(ZoneOffset.of(???)).toLocalDateTime(); …
Run Code Online (Sandbox Code Playgroud)

java timezone

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

如何将类型限制为 Scala 中的特定类型

我想修改这里给出的代码:Find min and max elements of array

def minMax(a: Array[Int]) : (Int, Int) = {
  if (a.isEmpty) throw new java.lang.UnsupportedOperationException("array is empty")
  a.foldLeft((a(0), a(0)))
  { case ((min, max), e) => (math.min(min, e), math.max(max, e))}
}
Run Code Online (Sandbox Code Playgroud)

也可以使用Long, Floatand Double(因为这些是 scala.math.min/max 接受的类型。我试过:

def getMinAndMax[@specialized(Int,Long,Float,Double) T](x: Seq[T]) : (T, T) = {
  if (x.isEmpty) throw new java.lang.UnsupportedOperationException("seq is empty")
  x.foldLeft((x.head, x.head))
  { case ((min, max), e) => (math.min(min, e), math.max(max, e))}
}
Run Code Online (Sandbox Code Playgroud)

但这也不能编译。有什么建议吗?

generics scala numeric

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

修改离散的LinearSegmentedColormap

我是气候学家,经常使用"蓝色到白色到红色"的色彩图来绘制温度场的异常.为了使图表更具可读性,我使用我在互联网上"找到"的功能将颜色图在一定数量的级别(箱子)中离散化(但我真的不明白):

像这样的东西:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
import matplotlib.colors as cols
from numpy.random import randn

def cmap_discretize(cmap, N):
    colors_i = np.concatenate((np.linspace(0, 1., N), (0.,0.,0.,0.)))
    colors_rgba = cmap(colors_i)
    indices = np.linspace(0, 1., N+1)
    cdict = {}
    for ki,key in enumerate(('red','green','blue')):
        cdict[key] = [ (indices[i], colors_rgba[i-1,ki], colors_rgba[i,ki]) for i in xrange(N+1) ]
    # Return colormap object.
    return cols.LinearSegmentedColormap(cmap.name + "_%d"%N, cdict, 1024)



cmap_disc= cmap_discretize(cm.RdBu_r,12)


fig, ax = plt.subplots()
data = np.clip(randn(250, 250), -1, 1)

cax …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

检查是否在p:fileUpload中选择了一个文件

我正在使用PrimeFaces的简单fileUpload和自定义提交按钮,如下所示:

<h:form enctype="multipart/form-data">

    <p:fileUpload value="#{fileController.file}"
                  mode="simple"
                  skinSimple="true"
                  label="choose file"/>

    <p:commandButton value="upload"
                     ajax="false"
                     label="upload"
                     icon="fa fa-upload"
                     actionListener="#{fileController.upload}"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)

在backing bean中,file是一个类型的属性UploadedFile.

现在我想要upload在没有选择文件的情况下禁用该按钮,但是我无法获得信息,无论用户是否选择了文件,file属性都会保留,null直到upload单击该按钮为止.我试过valueChangeListener的上<p:fileUpload>部件,但是当我点击上传按钮的事件仅触发(但后来为时已晚)

有人有建议吗?

jsf file-upload primefaces

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

JavaFX8 中的任务链:在 onSucceeded 完成上一个任务后启动下一个任务

我对 JavaFX8 相当陌生,面临以下问题。在我当前用于文档处理/编辑的应用程序中,我有两个相当昂贵的任务。打开文档并保存文档。

我的应用程序有“导入下一个”、“导出当前”和“导出当前并导入下一个”按钮。对于导入和导出,我有两个结构如下的任务:

    private class Export extends Task<Void> {
    public Export() {
        this.setOnRunning(event -> {
            // do stuff (change cursor etc)
        });

        this.setOnFailed(event -> {
            // do stuff, eg. show error box
        });

        this.setOnSucceeded(event -> {
            // do stuff
        });
    }

    @Override
    protected Void call() throws Exception {
        // do expensive stuff
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用 提交任务Executors.newSingleThreadExecutor();

对于“导出当前并导入下一个”功能,我的目标是将导出和导入任务提交给执行器,但我的导入任务仅应在导出任务成功并且给出的事件处理程序setOnSucceedded(在 GUI 上运行)的情况下运行线程)完成。如果导出失败,则加载下一个文档没有任何意义,因为需要用户交互。如何才能实现这一目标?

首先,我厌倦了该call方法中的整个逻辑/错误处理,但这不起作用,因为我无法从此方法更改 GUI(即显示错误框)。

作为解决方法,我在导出任务的最后一行手动提交导入任务setOnSucceeded,但这不是很灵活,因为我想确保该任务仅导出(无需后续导入)...

concurrency javafx-8

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

Spark 将 DataFrame API 中的所有 NaN 替换为 null

我有一个包含许多双(和/或浮点)列的数据框,其中确实包含 NaN。我想用空值替换所有 NaN(即 Float.NaN 和 Double.NaN)。

我可以用例如单列来做到这一点x

val newDf = df.withColumn("x", when($"x".isNaN,lit(null)).otherwise($"x"))
Run Code Online (Sandbox Code Playgroud)

这有效,但我想一次对所有列执行此操作。我最近发现DataFrameNAFunctions( df.na)fill听起来正是我需要的。不幸的是我没有做到以上几点。 fill应该用给定的值替换所有 NaN 和空值,所以我这样做:

df.na.fill(null.asInstanceOf[java.lang.Double]).show
Run Code Online (Sandbox Code Playgroud)

这给了我一个 NullpointerException

还有一个很有前途的replace方法,但我什至无法编译代码:

df.na.replace("x", Map(java.lang.Double.NaN -> null.asInstanceOf[java.lang.Double])).show
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这给了我

Error:(57, 34) type mismatch;
 found   : scala.collection.immutable.Map[scala.Double,java.lang.Double]
 required: Map[Any,Any]
Note: Double <: Any, but trait Map is invariant in type A.
You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
    df.na.replace("x", Map(java.lang.Double.NaN -> null.asInstanceOf[java.lang.Double])).show
Run Code Online (Sandbox Code Playgroud)

scala apache-spark spark-dataframe

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

Snowflake SnowPark Python - 说明

有一些关于使用 Python 进行 SnowPark 的问题。

  1. 当我们已经有了 Snowflake python 连接器(免费)可以使用 Snowflake DW 连接到 Python jupyter 时,为什么还需要 Snowpark?

  2. 如果我们使用snowpark并连接本地jupyter文件来运行ML模型。是用我们本地机器算力还是Snowflake算力?如果是我们本地机器算力我们怎么用Snowflake算力来运行ml模型呢?

python-3.x snowflake-cloud-data-platform snowpark

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

在运行时获取可执行文件名

使用pgf90编译器,是否可以在运行时获取可执行文件的名称?将此信息与svn修订号一起保存在输出中会很好(这已经在预处理期间实现并完成).

谢谢

fortran

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

不带参数的scala方法中的模式匹配

我最近查看了scala多线程教程,并偶然发现了一个在Actor中实现的方法:

class MyActor extends Actor
  def receive = {
    case "test" => println("received test")
    case _ =>      println("received unknown message")
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然我认为我知道该方法的作用,但我无法弄清楚如何使用这样的方法(在它没有任何参数).

Althouh这个例子是关于Akka的,我认为这与Akka无关

scala

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

为Scala的对象设置隐式实例变量

我有一个带有一堆实用程序方法的Scala对象,每个方法都使用一个隐式方法参数 s

object MyObject {
 def a(implicit s:String) = ???
 def b(implicit s:String) = ???
 def c(implicit s:String) = ???
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢implicit s:String在每个参数列表中需要这个的事实.有没有办法只设置s一次变量(即首次访问对象时).对于一堂课,我会做这样的事情:

class MyClass(implicit s:String) {
 def a() = ???
 def b() = ???
 def c() = ???
}
Run Code Online (Sandbox Code Playgroud)

scala implicits

0
推荐指数
1
解决办法
613
查看次数

Scala-如何以功能方式在列表周围循环

我需要遍历一个列表,并将列表中的上一个元素与当前元素进行比较。从传统的编程背景开始,我使用带变量的循环来保存先前的值,但是对于Scala,我认为应该有一种更好的方法。

for (item <- dataList)
{
   // Code to compare previous list element
   prevElement = item
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以正常工作并给出正确的结果,但是我想探索编写相同代码的功能方法。

functional-programming scala

0
推荐指数
1
解决办法
647
查看次数