小编mgi*_*son的帖子

MPI计数为零通常是有效的

我今天遇到了这个问题(http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Send.html)

__PRE__

零计数通常有效意味着什么?这是否意味着它依赖于实现?

c fortran mpi

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

将数组广播到不同的形状(添加"假"尺寸)

在python(使用numpy)中,我可以将数组广播为不同的形状:

>>> import numpy as np
>>> a = np.array([2,3,4])
>>> b = np.zeros((3,2))
>>> b[:,:] = np.zeros((3,2))
>>> b[:,:] = a[:,np.newaxis]  #<-- np.newaxis allows `a` to be "broadcasted" to the same shape as b.
>>> b
array([[ 2.,  2.],
       [ 3.,  3.],
       [ 4.,  4.]])
>>> c = np.zeros((2,3))
>>> c[:,:] = a[np.newaxis,:]
>>> c
array([[ 2.,  3.,  4.],
       [ 2.,  3.,  4.]])
Run Code Online (Sandbox Code Playgroud)

有没有办法在fortran中达到同样的效果?我有一个子程序,希望2D传入一个数组 - 我想将我的1-D阵列"广播"到2-D,如上所述.由于它似乎很重要,我的2D数组确实有一个明确的界面.

作为旁注,我认为这个功能可能reshape内在提供, - 像: …

python arrays fortran numpy numpy-broadcasting

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

使用非字符串关键字传递dict以在kwargs中运行

我使用具有签名功能的库f(*args, **kwargs).我需要在kwargs参数中传递python dict,但是dict不包含关键字中的字符串

f(**{1: 2, 3: 4})
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: f() keywords must be strings
Run Code Online (Sandbox Code Playgroud)

如何在不编辑功能的情况下解决这个问题?

python arguments function python-3.x

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

有没有办法在没有try/except的情况下对异常提升到程序顶部?

我可以捕获并转储一个异常(和相应的堆栈跟踪),这会导致程序崩溃而不执行以下操作:

try:
   # whole program
except Execption as e:
   dump(e)
   raise
Run Code Online (Sandbox Code Playgroud)

有时外部库崩溃了,我想对Python死亡做出反应并记录它的原因.我不想阻止Exception崩溃程序,我只想要调试信息.

就像是:

signals.register('dying', callback)

def callback(context):
    # dumping the exception and
    # stack trace from here
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

python exception

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

"保存"一个共同的块

我正在处理一些COMMON广泛使用块的遗留代码,有时使用该SAVE语句.在查阅Fortran标准后,它说:

SAVE语句中以斜杠开头和后跟的公共块名称的出现具有指定该公共块中的所有实体的效果.

在什么情况下将变量放在公共块中并不意味着SAVE什么?由于变量必须可以在包含该公共块的任何其他程序单元中访问,因此它怎么可能不被SAVE编辑?

fortran fortran-common-block

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

python中的前缀匹配

我有一个字符串:

" This is such an nice artwork"
Run Code Online (Sandbox Code Playgroud)

我有一个tag_list ["art","paint"]

基本上,我想写一个函数,接受这个字符串和taglist作为输入,并返回单词"artwork",因为艺术作品包含在taglist中的单词art.

我如何最有效地做到这一点?

我希望这在速度方面是有效的

 def prefix_match(string, taglist):
        # do something here
     return word_in string
Run Code Online (Sandbox Code Playgroud)

python

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

打印Python词典的差异

我想拿两本字典并打印出它们的差异.此差异应包括键和值的差异.我已经创建了这个小片段,以使用unittest模块中的内置代码实现结果.然而,这是一个讨厌的黑客,因为我必须子类unittest.TestCase并提供一种runtest()方法来工作.此外,此代码将导致应用程序出错,因为它会AssertError在存在差异时引发.我真正想要的就是打印差异.

import unittest
class tmp(unittest.TestCase):
    def __init__(self):
         # Show full diff of objects (dicts could be HUGE and output truncated)
        self.maxDiff = None
    def runTest():
        pass
_ = tmp()
_.assertDictEqual(d1, d2)
Run Code Online (Sandbox Code Playgroud)

我希望使用该difflib模块,但它看起来只适用于字符串.有没有办法解决这个问题并仍在使用difflib

python

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

在fortran中初始化参数数组的正确方法是什么?

这很好用:

  program main
    integer,parameter,dimension(3) :: x = [1,2,3]
    print*,x
  end program main
Run Code Online (Sandbox Code Playgroud)

就像这样:

  program main
    integer,parameter,dimension(3) :: x = (/1,2,3/)
    print*,x
  end program main
Run Code Online (Sandbox Code Playgroud)

是否有理由认为一种形式应优先于另一种形式(例如向后兼容性)?

fortran fortran90

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

numpy插入轴使数据不连续

为什么插入新轴会使数据不连续?

>>> a = np.arange(12).reshape(3,4,order='F')
>>> a
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])
>>> a.reshape((3,1,4)).flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a[np.newaxis,...].flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

mypy 并分发命名空间包

我有一组命名空间包,旨在在 python3.6 环境中运行。

它们各自的设置如下:

if sys.version_info < (3, 6):
    print("Python versions < 3.6 unsupported", file=sys.stderr)
    sys.exit(1)

setup(
    name="mynamespace.subpackage",
    version=VERSION,

    packages=[
        "mynamespace.subpackage",
    ],
    package_dir={"": "src"},
    package_data={
        "": [],
    },
    include_package_data=True,
    zip_safe=False,

    install_requires=[
        "mynamespace.core",  # May have explicit dependencies that are not cyclic
    ],

    namespace_packages=["mynamespace"],
    ...
)
Run Code Online (Sandbox Code Playgroud)

所有子包都可以很好地并排安装。

当我想通过 获得强大的类型检查时,问题就出现了mypy。 在源文件上运行时mypy无法找到子包mynamespace.coremynamespace.subpackage子包(例如),这意味着我无法跨子包边界进行可靠的类型检查。

这似乎是一个已知问题: https ://github.com/python/mypy/issues/1645

Guido 提到解决方法是“添加虚拟文件__init__.py__init__.pyi文件”,但他并没有真正详细说明,事实证明这对我来说并不像我希望的那么明显。将这些文件添加到本地存储库允许 mypy 按预期运行本地存储库,我不知道如何访问同级命名空间包中的类型信息。

我的问题是:我将如何修改mynamespace.core- 以便在安装时mypy能够在其他模块中获取它的类型信息?

python python-3.x namespace-package mypy

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