小编cra*_*sic的帖子

使用Python ConfigParser的多个配置文件

调用ConfigParser.read时,您可以传递与配置文件的潜在位置相对应的字符串列表,该函数返回已成功读取的文件列表.

加载具有重叠部分/键的多个配置文件时的默认行为是什么?列表中的后续文件是否会覆盖之前的文件?整个部分是否被覆盖或只是冲突的键?

python configuration

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

Numpy - -1的平方根留下一个小的实部

也许这是一个算法问题,但是下面的一段代码

numpy.power((-1+0j),0.5)

产生以下输出

(6.1230317691118863e-17+1j)

numpy.power(complex(-1),.5)然而,类似的表达式产生相同的结果 - numpy.sqrt(complex(-1))产生预期的结果1j.显然,结果应该没有真正的部分,所以我遗漏了一些关键的东西,或者我需要向numpy dev's报告.

如果有人问,不,我不能完全摆脱真实部分(我需要完全精确的计算),是的,我需要使用电源功能.

python floating-point numpy square-root

13
推荐指数
3
解决办法
2202
查看次数

Mathematica - DSolve在输出中吐出#1

我不太确定如何解释这个问题.

我正在解决一个相当大的微分方程系统,DSolve 有时会列出一个替换规则列表,其中包含具有a的项#1.我知道这#1是一个争论的占位符,但我不知道它来自哪里.

如果我有一个类似于的方程组

eqs = {
x1'[t] = a1*x1[t] + b1*y1[t]
x2'[t] = a2*x2[t] + b2*y2[t]
...
y1'[t] = c1*y1[t] + d1*x1[t]
y2'[t] = c2*y2[t] + d2*x2[t]}
Run Code Online (Sandbox Code Playgroud)

DSolve[eqs,vars,t] 吐出类似的东西

x1 -> e^(-ta1)
x2 -> e^(-t)RootSum[a1a2+a3b4#1 + a3a1b2#1]
...
Run Code Online (Sandbox Code Playgroud)

显然有点复杂,但你明白了.

文档中没有任何内容暗示为什么会发生这种情况,而且它只发生在某些参数的变化下(例如,当我在原始系统中使用参数时,它可以工作或不工作)

wolfram-mathematica

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

Mathematica中的复杂误差函数

复杂的误差函数 W(Z)被定义为e^(-x^2) erfc(-ix).使用上面定义的w(z)的问题是erfc倾向于爆发出更大的x(由指数变为0补充所以一切都保持很小),因此Mathematica恢复到使生命非常缓慢的任意精度计算.该功能用于实现voigt轮廓 - 一种常用于光谱学和其他相关领域的线形.现在,我恢复到曾经计算线形和使用插值来加快速度,但是这并没有让我改变线形参数(或适合他们)很容易.

scipy有一个很好的快速实现w(z)as scipy.special.wofz,我想知道Mathematica中是否有一个等价物.

wolfram-mathematica

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

在python中延迟加载模块

我正在编写一个用于从科学仪器获取数据的python applet,我正试图找出管理设备"驱动程序"的最佳方法.

每个驱动程序都由程序包中的一个单独的python模块表示.它们每个都实现了一些标准接口,但主要是它是一个巨大的命令列表(和函数映射),它们特定于每个设备和总线.从长远来看,(我正在为我的实验室小组写这篇文章并计划支持几十台设备)我想避免立即加载所有这些设备.相反,在运行时,我想将模块列表读入字典/列表,然后仅在实际需要时才加载它们.

当用户想要使用新设备时,他选择要使用的驱动程序,并将名称传递给驱动子系统,然后驱动子系统检查该驱动程序是否在加载模块列表中,如果不是,则调用__import__函数和加载驱动程序然后使用驱动程序实例化设备对象并将其交还给用户使用.

我的问题是:以相对方式获取所有模块列表的最佳方法是什么?我的意思是,如果我知道驱动程序所在的位置,..drivers是否有办法在该子潜艇中获得整齐的模块列表?为了说明:通常我只是调用from ..drivers import driver_name导入模块,但由于我不能保证包目录中,不能只是我们os获取模块名称列表.

在任何情况下,任何想法(甚至可能是一个更好的方式来实现我想要的 - 可加载的"驱动程序")将不胜感激.

python module packages

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

Pythonic方式填充numpy数组

我发现自己使用csv阅读器解析了大量数据文件(通常是.csv文件或类似文件),并使用for循环迭代每一行.例如,数据通常是浮点表.

reader = csv.reader(open('somefile.csv'))
header = reader.next()

res_list = [list() for i in header]    

for line in reader:
  for i in range(len(line)):
    res_list[i].append(float(line[i]))

result_dict = dict(zip(header,res_list)) #so we can refer by column title
Run Code Online (Sandbox Code Playgroud)

这是一个填充的好方法,所以我将每个列作为一个单独的列表,但是,我更希望项目列表(和嵌套列表)的默认数据容器是numpy数组,因为99次超出100个数字被泵入各种处理脚本/功能并具有numpy列表的强大功能使我的生活更轻松.

numpy append(arr, item)不会就地附加,因此需要为表中的每个点重新创建数组(这是缓慢且不必要的).我也可以遍历数据列列表并在完成之后将它们包装到一个数组中(这就是我一直在做的),但有时我不完全清楚我何时完成解析文件,可能需要稍后将内容附加到列表中.

我想知道是否有一些不那么重锅炉的方式(使用过度使用的短语"pythonic")以类似的方式处理数据表,或者动态地填充数组(底层容器是列表)而不复制数组一直都是.

(另一方面说明:一般人们使用列来组织数据,但csv如果读者合并了read_column参数(是的,我知道它不会超级高效),那就很烦人了,我想很多人都会避免像上面这样的锅炉板代码来解析一个csv数据文件.)

python arrays numpy

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