小编Sol*_*lma的帖子

Spyder缺少对象检查器

我刚安装了Anaconda并运行Spyder我找不到Object Inspector.按Ctrl + I无效,在View/Panes菜单中没有项目Object Inspector.

我已经看过显示Object Inspector的视频和教程.怎么了?

python spyder

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

为什么Seq.init比带'for'的序列表达式慢?

以下代码显示使用包含序列表达式for生成序列比使用生成相同序列快约五倍Seq.init.

open System
let rand count =
    let rnd = Random() // if this value is not created all numbers are equal
    seq {for i in 0..(count - 1) -> rnd.NextDouble()}


/// Perhaps more "functional" than rand but slower
let rand2 count =
    let rnd = Random()
    let rnd2 (i: int) = rnd.NextDouble()
    Seq.init count rnd2

> rand 1000000 |> List.ofSeq |> List.head;;
Real: 00:00:00.092, CPU: 00:00:00.093, GC gen0: 3, gen1: 2, gen2: 0
val it …
Run Code Online (Sandbox Code Playgroud)

f# lazy-sequences

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

为什么可以重新定义Var(假设FP值是不可变的)?

我使用逆时针运行REPL,但我也注意到了Leiningen.

我可以调用def来定义var两次.例如,

=> (def a 1)
#'fractal.core/a
=> a
1
=> (def a 2)
#'fractal.core/a
=> a
2
Run Code Online (Sandbox Code Playgroud)

Clojure是一种函数式编程语言,在FP对象中应该是不可变的.如果我能在什么意义上做到这一点是不可改变的?

谢谢你的评论.

clojure

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

Numba在分配数组时会变慢吗?

Numba似乎是加速数字代码执行的绝佳解决方案.但是,当有数组赋值时,Numba似乎比标准Python代码慢.考虑这个例子比较四个替代方案,有/无Numba,写入数组/标量:

(计算保持非常简单,专注于问题,即分配给标量与分配到数组单元格)

@autojit
def fast_sum_arr(arr):
    z = arr.copy()
    M = len(arr)
    for i in range(M):
        z[i] += arr[i]

    return z

def sum_arr(arr):
    z = arr.copy()
    M = len(arr)
    for i in range(M):
        z[i] += arr[i]

    return z

@autojit
def fast_sum_sclr(arr):
    z = 0
    M = len(arr)
    for i in range(M):
        z += arr[i]

    return z

def sum_sclr(arr):
    z = 0
    M = len(arr)
    for i in range(M):
        z += arr[i]

    return z
Run Code Online (Sandbox Code Playgroud)

使用IPython的%timeit来评估我得到的四个替代方案:

In [125]: %timeit fast_sum_arr(arr)
100 loops, best …
Run Code Online (Sandbox Code Playgroud)

python arrays numba

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

S4方法调度慢吗?

我的S4类有一个多次调用的方法.我注意到执行时间比独立调用类似函数时要慢得多.所以我在我的类中添加了一个带有"function"类型的插槽,并使用该函数而不是方法.下面的示例显示了两种执行此操作的方法,它们都比相应的方法运行得快得多.此外,该示例表明该方法的较低速度不是由于必须从类中检索数据的方法,因为即使它们也这样做,功能也更快.

当然,这种做事方式并不理想.我想知道是否有办法加速方法调度.有什么建议?

    setClass(Class = "SpeedTest", 
      representation = representation(
        x = "numeric",
        foo1 = "function",
        foo2 = "function"
      )
    )

    speedTest <- function(n) {
      new("SpeedTest",
        x = rnorm(n),
        foo1 = function(z) sqrt(abs(z)),
        foo2 = function() {}
      )
    }

    setGeneric(
      name = "method.foo",
      def = function(object) {standardGeneric("method.foo")}
    )
    setMethod(
      f = "method.foo", 
      signature = "SpeedTest",
      definition = function(object) {
        sqrt(abs(object@x))
      }
    )

    setGeneric(
      name = "create.foo2",
      def = function(object) {standardGeneric("create.foo2")}
    )
    setMethod(
      f = "create.foo2", 
      signature = "SpeedTest",
      definition = function(object) { …
Run Code Online (Sandbox Code Playgroud)

r dispatch s4

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

如何在不复制数据的情况下连接 pandas DataFrame?

我想连接两个 pandas DataFrame 而不复制数据。也就是说,我希望连接的 DataFrame 成为两个原始 DataFrame 中数据的视图。我尝试使用 concat() 但不起作用。此代码块显示更改基础数据会影响连接的两个 DataFrame,但不会影响连接的 DataFrame:

arr = np.random.randn(12).reshape(6, 2)
df = pd.DataFrame(arr, columns = ('VALE5', 'PETR4'), index = dates)
arr2 = np.random.randn(12).reshape(6, 2)
df2 = pd.DataFrame(arr, columns = ('AMBV3', 'BBDC4'), index = dates)
df_concat = pd.concat(dict(A = df, B = df2),axis=1)
pp(df)
pp(df_concat)
arr[0, 0] = 9999999.99
pp(df)
pp(df_concat)
Run Code Online (Sandbox Code Playgroud)

这是最后五行的输出。为 arr[0, 0] 分配新值后 df 发生变化;df_concat 不受影响。

In [56]: pp(df)
           VALE5     PETR4
2013-01-01 -0.557180  0.170073
2013-01-02 -0.975797  0.763136
2013-01-03 -0.913254  1.042521
2013-01-04 -1.973013 -2.069460 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

为什么来自Deedle的Frame.X静态方法在VS 2017中产生警告?

我2017年昨天下载了新的VS和它工作正常,但我收到的每一行,我调用静态方法这个警告Frame.ReadCsvDeedle包:

FS10001 This method is not intended for use from F#
Run Code Online (Sandbox Code Playgroud)

调用其他静态方法Frame.X不会生成相同的警告.

示例 - 此行代码生成警告:

let msft =
    Frame.ReadCsv(Config.tsDir + "MSFT.csv",
                  hasHeaders=true,
                  inferTypes=true)
Run Code Online (Sandbox Code Playgroud)

Intellisense识别该方法并提供适当的提示,这些提示完全符合签名 http://bluemountaincapital.github.io/Deedle/reference/deedle-frame.html

f# warnings visual-studio deedle

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

熊猫比numpy慢得多?

下面的代码表明,pandas可能比numpy慢得多,至少在函数clip()的特定情况下.令人惊讶的是,从熊猫到numpy和回到熊猫的往返,同时在numpy中进行计算,仍然比在熊猫中做得快得多.

大熊猫的功能难道不应该以这种迂回方式实施吗?

In [49]: arr = np.random.randn(1000, 1000)

In [50]: df=pd.DataFrame(arr)

In [51]: %timeit np.clip(arr, 0, None)
100 loops, best of 3: 8.18 ms per loop

In [52]: %timeit df.clip_lower(0)
1 loops, best of 3: 344 ms per loop

In [53]: %timeit pd.DataFrame(np.clip(df.values, 0, None))
100 loops, best of 3: 8.4 ms per loop
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

如何为 Rust 创建快捷键:cargo run?

我刚刚开始使用 Rust 和 VSCode。

如果我点击F1并选择Tasks: Run Task,我会看到任务列表。如果我选择该Run: cargo run任务并点击Enter,它将在终端中执行。

因此需要敲击三个按键。有没有一种方法可以分配快捷键,以便通过一次按键即可完成此操作?

观察:Ctrl++使出现两个项目ShiftB列表:Rust: cargo buildRust: cargo check

keyboard-shortcuts rust visual-studio-code

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

Python自动复制初始化器参数

Python类有一个名为init的初始化方法.初始化程序通常会接受多个复制到同名属性的参数.

def __init__(self, a, b, c, d):
    self.a = a
    self.b = b
    self.c = c
    self.d = d
Run Code Online (Sandbox Code Playgroud)

这是很多工作,对我来说感觉"unpythonic".有没有办法自动化这个过程?

我想也许沿着这些方面的东西(下面的伪代码)可以工作:

for x in __init__.argument_names:
    exec('self.' + x + ' = ' + x)
Run Code Online (Sandbox Code Playgroud)

我知道用这种方式调用exec不是好习惯.但也许Python开发团队已经创建了一种安全且等效的自动执行此任务的方法.

有什么建议?

FS

python

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