小编Isa*_*aac的帖子

麻烦这个宏

令人尴尬的是,我在设计这个宏时遇到了一些麻烦.

这是我编写的宏:

(defmacro construct-vertices
  [xs ys]
  (cons 'draw-line-strip
        (map #(list vertex %1 %2) xs ys)))
Run Code Online (Sandbox Code Playgroud)

它需要接收两个集合或seqs,xs并且ys,我需要它给我...

(draw-line-strip (vertex 0 1) (vertex 1 1) 
                 (vertex 3 3) (vertex 5 6) 
                 (vertex 7 8))
Run Code Online (Sandbox Code Playgroud)

... for xs= [0 1 3 5 7]和ys= [1 1 3 6 8].

如果我给我的微距平原"N"简单的载体(如这只是正常[1 2 3 4]和[2 3 4 5]),但如果我给它一个懒惰-SEQ /任何需要像被评估不工作(take 16 (iterate #(+ 0.1 %1) 0))和(take 16 (cycle [0 -0.1 0 …

lisp macros clojure

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

在Clojure中使用延迟卷积fn的麻烦

我正在编写一些信号处理软件,我开始编写一个离散卷积函数.

这适用于前一万个左右的值列表,但随着它们变大(例如,100k),我开始得到StackOverflow错误,当然.

不幸的是,我在将命令式卷积算法转换为递归和懒惰版本时遇到了很多麻烦,实际上使用速度足够快(至少有一点优雅也很好).

我也不是100%确定我完全没有这个功能,但是 - 如果我错过了什么/做错了什么,请告诉我.我认为这是正确的.

(defn convolve
  "
    Convolves xs with is.

    This is a discrete convolution.

    'xs  :: list of numbers
    'is  :: list of numbers
  "
  [xs is]
  (loop [xs xs finalacc () acc ()]
    (if (empty? xs)
      (concat finalacc acc)
      (recur (rest xs)
             (if (empty? acc)
               ()
               (concat finalacc [(first acc)]))
             (if (empty? acc)
               (map #(* (first xs) %) is)
               (vec-add
                (map #(* (first xs) %) is)
                (rest …
Run Code Online (Sandbox Code Playgroud)

functional-programming signal-processing clojure convolution

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

列出列表中的每个第二个对象

我有一个IEnumerable,我希望得到一个包含每个第n个元素的新IEnumerable.

这可以在Linq完成吗?

.net c# linq linq-to-objects

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

快速绘图库

我一直在使用Incanter来满足我的图形需求,这对我之前的需求来说已经足够但速度很慢.

现在我需要在JPanel中嵌入一个图形.用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点).放大出局也是必须的.

我在其他SO讨论中听说过JFreeChart,但是我看到Incanter使用它作为它的图形引擎,然后它看起来有点慢.它实际上很快,但也许Incanter做的事情会减慢它的速度?

我正在绘制高达200万点(简单的xy-plot,真的),但通常会减少图形.使用Matlab,这可以在几秒钟内绘制,但Incanter可以挂起几分钟.

那么JFreeChart是如何走的?或者其他什么,考虑到我的需求?

(此外,它需要是免费的,因为它适用于研究.)

java clojure

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

使用Swing时的竞争条件(?)

我已经尝试使用OpenGL通过Penumbra尝试使用其Graphics上下文直接在JPanel上绘图.

这将是很好的,除了我遇到了一些麻烦...我编译我的代码,并且〜25次中的〜1次,图形(这是一个例子的矩形)绘制得很好.其他~24次,它没有.

这是我的代码:

(def main
  (let [frame (JFrame. "This is a test.")
        main-panel (JPanel. (GridBagLayout.))
        tpan (proxy [JPanel] [] (getPreferredSize [] (Dimension. 600 400)))]

    (doto frame
      (set-content-pane
       (doto main-panel
         (grid-bag-layout
          :gridx 0 :gridy 0
          tpan
          :gridx 0 :gridy 1
          xy-label)))
      (pack-frame)
      (set-visible))

    (draw-line tpan Color/RED 250 250 50 50)))
Run Code Online (Sandbox Code Playgroud)

功能draw-line如下:

(defn draw-line [panel color x y w h]
  (let [graphics (.getGraphics panel)]
    (doto graphics
      (.setColor color)
      (.drawRect x y w h))))
Run Code Online (Sandbox Code Playgroud)

我不知道发生了什么事.起初我以为这是我正在研究的参考文献,但后来我把它们拿出来,仍然有这些问题.我也重置了lein和slime/swank和emacs.我很困惑.

像往常一样,任何帮助将不胜感激.我希望这是一个有答案的问题!最近,我似乎在问不可能:)

java swing clojure race-condition

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

如何在Clojure中处理大型二进制数据?

如何在Clojure中处理大型二进制数据文件?假设数据/文件大约为50MB - 小到足以在内存中处理(但没有简单的实现).

以下代码正确地从小文件中删除^ M,但它会抛出OutOfMemoryError较大的文件(如6MB):

(defn read-bin-file [file]
  (to-byte-array (as-file file)))

(defn remove-cr-from-file [file]
  (let [dirty-bytes (read-bin-file file)
        clean-bytes (filter #(not (= 13 %)) dirty-bytes)
        changed?    (< (count clean-bytes) (alength dirty-bytes))]    ; OutOfMemoryError
    (if changed?
      (write-bin-file file clean-bytes))))    ; writing works fine
Run Code Online (Sandbox Code Playgroud)

似乎Java字节数组不能被视为seq,因为它非常低效.

在另一方面,提供解决方案aset,aget并且areduce是臃肿,丑陋的和必要的,因为你不能真正使用Clojure的序列库.

我错过了什么?如何在Clojure中处理大型二进制数据文件?

clojure binary-data

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

将财务数据从postgres转换为pandas数据框,以便与Zipline一起使用

我是Pandas和Zipline的新手,我正在努力学习如何使用它们(并将它与我拥有的这些数据一起使用).任何类型的提示,即使没有完整的解决方案,将非常感激.我已经尝试了很多东西,并且已经非常接近,但Exception: Reindexing only valid with uniquely valued Index objects特别是遇到了索引问题.[Pandas 0.10.0,Python 2.7]

我试图通过以下形式转换我在postgres中的数千种股票的月度回报数据:

ticker_symbol :: String, monthly_return :: Float, date :: Timestamp
Run Code Online (Sandbox Code Playgroud)

例如

AAPL, 0.112, 28/2/1992
GS, 0.13, 30/11/1981
GS, -0.23, 22/12/1981
Run Code Online (Sandbox Code Playgroud)

注意:报告的频率是每月一次,但这里会有相当多的NaN数据,因为我在这里的6000多家公司并非同时出现这些数据.

...到下面描述的形式,这是Zipline运行其后测试器所需要的.(我想.Zipline的backtester可以轻松地使用这样的月度数据吗?我知道它可以,但是这样做的任何提示?)


以下是DataFrame(时间序列?这个怎么说?),我需要的格式:

> data:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2268 entries, 1993-01-04 00:00:00+00:00 to 2001-12-31 00:00:00+00:00
Data columns:
AA      2268  non-null values
AAPL    2268  non-null values
GE      2268  non-null values
IBM     2268  non-null values
JNJ     2268  non-null values
KO      2268  non-null values
MSFT    2268  non-null …
Run Code Online (Sandbox Code Playgroud)

python etl pandas zipline

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

减少Pandas中的一列

我正在尝试将一个(很多,很多)返回数据列转换为收盘价格列.在Clojure中,我会使用reductions,就像reduce,但返回所有中间值的序列.

例如

$ c

0.12
-.13
0.23
0.17
0.29
-0.11

# something like this
$ c.reductions(init=1, lambda accumulator, ret: accumulator * (1 + ret)) 

1.12
0.97
1.20
1.40
1.81
1.61
Run Code Online (Sandbox Code Playgroud)

注意:实际收盘价无关紧要,因此使用1作为初始值.我只需要一个"模拟"收盘价.

我的数据的实际结构是TimeSeries的命名列的DataFrame.我想我正在寻找一个类似的功能applymap,但是我宁愿不做一些hacky这个功能并从中引用DF(我想这是解决这个问题的一个方法吗?)

另外,如果我想保留returns数据,但我的收盘价格是多少呢?我应该返回一个元组,并让TimeSeries属于那个类型(returns, closing_price)吗?

python pandas

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

这个Javascript语句(正则表达式)是什么意思?

RegEx在这里测试什么?

function chksql(){    
  if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;    
}
Run Code Online (Sandbox Code Playgroud)

我只知道它与正则表达式混合在一起,但无法弄清楚它的含义.

javascript regex

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

别名comp为º,部分为¬在clojure中

我错过了一个简短的语法来表达对Clojure函数的基本操作.正因为如此,我开始使用º作为速记comp(因为它是更接近数学运算符,但交通方便),并¬为partial(因为缺少提醒参数的我).

你对此有何看法?是否有用或者是否存在使代码混淆的风险?

conventions clojure

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