我需要测试变量是否为类型的int,或任何的np.int*,np.uint*优选使用单一的条件(即没有or).
经过一些测试,我想:
isinstance(n, int)只会匹配int和np.int32(或np.int64取决于平台),np.issubdtype(type(n), int)似乎所有的匹配int和np.int*,但不匹配np.uint*.这导致两个问题:是否会np.issubdtype匹配任何类型的签名?可以在单个检查中确定一个数字是否是任何种类的有符号或无符号的int?
这是关于测试整数,测试应返回False浮动喜欢.
考虑以下循环:
for i in range(20):
if i == 10:
subprocess.Popen(["echo"]) # command 1
t_start = time.time()
1+1 # command 2
t_stop = time.time()
print(t_stop - t_start)
Run Code Online (Sandbox Code Playgroud)
当"命令1"在其之前运行时,"命令2"命令系统地运行更长时间.下图显示了1+1作为循环索引函数的执行时间i,平均超过100次运行.
执行1+1时比之前慢30倍subprocess.Popen.
我想通过Pool.map()将关键字参数传递给我的worker-function.在搜索论坛时,我找不到一个明确的例子.
示例代码:
import multiprocessing as mp
def worker((x,y), **kwargs):
kwarg_test = kwargs.get('kwarg_test', False)
print("kwarg_test = {}".format(kwarg_test))
if kwarg_test:
print("Success")
return x*y
def wrapper_process(**kwargs):
jobs = []
pool=mp.Pool(4)
for i, n in enumerate(range(4)):
jobs.append((n,i))
pool.map(worker, jobs) #works
pool.map(worker, jobs, kwargs) #how to do this?
def main(**kwargs):
worker((1,2),kwarg_test=True) #accepts kwargs
wrapper_process(kwarg_test=True)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
输出:
kwarg_test = True
Success
kwarg_test = False
kwarg_test = False
kwarg_test = False
kwarg_test = False
TypeError: unsupported operand type(s) for //: 'int' and 'dict' …Run Code Online (Sandbox Code Playgroud) 我正在使用该实用程序rename来自的 GNU/Linux 发行版,util-linux我想充分利用它的正则(Perl 或 POSIX)表达式。
rename 's/^fgh/jkl/' fgh*util-linux版本中,与语法rename fgh jkl fgh*如果第一个正则表达式的使用似乎很明显,我无法轻松访问它。但是,我对第二个感到困惑:我找不到有关可能使用的任何相关文档或示例,在这种情况下,找不到要使用的正则表达式的格式。
让我们举一个简单的例子,一个包含以下内容的目录:
foo_a1.ext
foo_a32.ext
foo_c18.ext
foo_h12.ext
Run Code Online (Sandbox Code Playgroud)
我想使用类似这两行之一的语法:
rename "foo_[a-z]([0-9]{1,2}).ext" "foo_\1.ext" *
rename "foo_[:alpha:]([:digit:]{1,2}).ext" "foo_\1.ext" *
Run Code Online (Sandbox Code Playgroud)
预期输出为:
foo_1.ext
foo_32.ext
foo_18.ext
foo_12.ext
Run Code Online (Sandbox Code Playgroud)
这当然行不通!要么我遗漏了一些明显的东西,要么没有实现的方法可以在这个工具中使用实际的正则表达式。
(请注意,我知道在 shell 解释器中使用正则表达式重命名文件的其他可能性;这个问题针对该rename工具的特定版本。)
我正在尝试使用astropy.io.fits以下方式将一些2000 FITS加载到内存中:
def readfits(filename):
with fits.open(filename) as ft:
# the fits contain a single HDU
data = ft[0].data
return data
data_sci = []
for i in range(2000):
data_sci.append(readfits("filename_{}.fits".format(i)))
Run Code Online (Sandbox Code Playgroud)
但是,到达1015th文件时,OSError: [Errno 24] Too many open
files将引发。
我有同样的问题:
def readfits(filename):
ft = fits.open(filename) as ft:
data = ft[0].data
ft.close()
return data
Run Code Online (Sandbox Code Playgroud)
我怀疑astropy.io.fits无法正确关闭文件。有什么办法可以强制关闭文件?
背景:从 Debian 8 更新到 9 后,Python 3.4 virtualenvs 停止工作,因为系统站点包全部被 Python 3.5 版本替换。这个答案建议删除旧的 virtualenv,创建一个新的,并使用pip install -r requirements.txt. 但是,我没有适用requirements.txt于所有的 virtualenv。我知道可以使用 创建此类文件pip freeze,但由于上述原因,pip无法使用1。
问题:我需要生成软件包列表以及它们各自安装在我\xc2\xa0 无法激活的virtualenv 中的列表。
\n\n问题:有没有办法获得类似于输出的列表pip freeze有没有办法在不实际运行 pip 的情况下获得类似于 virtualenv 的
注意:这个问题与 \xe2\x80\x9c返回脚本中使用的导入的 Python 模块列表不同?\xe2\x80\x9d 并且因为请求的答案不需要访问使用 virtualenv 的脚本,并且还应该返回 virtualenv 2中安装的软件包的版本。
\n\n1也就是说,运行pip(使用任何参数)会引发ImportError: No module named \'encodings\'.
2完全披露:我问了一个类似的问题,但被错误地视为重复而关闭。
\n函数scipy.interpolate.griddata允许指定fill_valuedoc指出的关键字:
用于填写输入点凸包之外的请求点的值。如果未提供,则默认值为nan。 此选项对“最近”方法无效。
但是,fill_value当method='nearest'与2D数据一起使用时,我需要指定a 在边界之外使用。如何做到这一点?
python ×6
numpy ×2
astropy ×1
bash ×1
fits ×1
kwargs ×1
linux ×1
performance ×1
pip ×1
qhull ×1
regex ×1
scipy ×1
subprocess ×1
types ×1
virtualenv ×1