小编Nic*_*mer的帖子

Numpy:检查数组的字符串数据类型

如何确定Numpy数组是否包含字符串?数组a

a = np.array('hi world')
Run Code Online (Sandbox Code Playgroud)

具有数据类型dtype('|S8'),其中8是指字符串中的字符数.

我不知道正则表达式(例如re.match('\|S\d+', a.dtype))在这里是如何工作的,因为数据类型不是简单的'|S8'.

干杯,尼科

python arrays string

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

命名dtype数组:[0] ['name']和['name'] [0]之间的区别?

我在numpy中遇到了以下奇怪的东西,可能是也可能不是bug:

import numpy as np
dt = np.dtype([('tuple', (int, 2))])
a = np.zeros(3, dt)
type(a['tuple'][0])  # ndarray
type(a[0]['tuple'])  # ndarray

a['tuple'][0] = (1,2)  # ok
a[0]['tuple'] = (1,2)  # ValueError: shape-mismatch on array construction
Run Code Online (Sandbox Code Playgroud)

我原以为这两个选项都有用.意见?

python arrays numpy user-defined-types

16
推荐指数
3
解决办法
1073
查看次数

argparse:使用必需参数的值设置可选参数

使用Python的argparse,我想添加一个可选参数,如果没有给出,则获取另一个(强制)参数的值.

parser.add_argument('filename',
                    metavar = 'FILE',
                    type    = str,
                    help    = 'input file'
                    )

parser.add_argument('--extra-file', '-f',
                    metavar = 'ANOTHER_FILE',
                    type    = str,
                    default = ,
                    help    = 'complementary file (default: FILE)'
                    )
Run Code Online (Sandbox Code Playgroud)

我当然可以None在解析参数后手动检查,但是不是有更多的pythonic方法吗?

python default-value argparse

16
推荐指数
1
解决办法
7521
查看次数

如何在x86和x86_64上使用Gcc 4.6.0 libquadmath和__float128

我有中等大小的C99程序,它使用long double类型(80位)进行浮点计算.我想用新的GCC 4.6扩展来提高精度__float128.我得到的是,它是一个软件模拟的128位精度数学.

我应该如何使用全精度的软件仿真将我的程序从80位的经典长双精度转换为128位的四重浮点数?我需要改变什么?编译器标志,来源?

我的程序读取了全精度值strtod,对它们进行了很多不同的操作(比如+ - */sin,cos,exp和其他<math.h>)和printf-ing.

PS:尽管float128仅针对Fortran(REAL*16)声明,但libquadmath是用C语言编写的,它使用float128.我不确定GCC会将float128上的操作转换为运行时库吗?我不确定如何在我的源代码中从long double迁移到__float128.

PPS:有关于"C"语言gcc模式的文档:http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html

"GNU C编译器支持... 128位(TFmode)浮点类型.支持其他类型包括算术运算符:加,减,乘,除 ;一元算术运算符;关系运算符;等于运算符... __float128类型支持i386,x86_64"

floating-point precision gcc 128-bit

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

ANSI-C不知道内联关键字吗?

编译简单的东西时

inline int test() { return 3; }

int main()
{
 test();
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc -c test.c,一切顺利.如果-ansi添加了关键字,gcc -ansi -c test.c则会收到错误消息

test.c:1:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘int’
Run Code Online (Sandbox Code Playgroud)

即使明确选择了C99标准,也是如此gcc -std=c99 -ansi -c test.c.

这是什么原因,是否有推荐的修复?

c inline c89

14
推荐指数
3
解决办法
7587
查看次数

在对列表中查找唯一对

我有一个(大)整数列表列表,例如,

a = [
    [1, 2],
    [3, 6],
    [2, 1],
    [3, 5],
    [3, 6]
    ]
Run Code Online (Sandbox Code Playgroud)

大多数对将出现两次,其中整数的顺序无关紧要(即[1, 2]相当于[2, 1]).我现在想找到只出现一次的对,并得到一个布尔列表来表示.对于上面的例子,

b = [False, False, False, True, False]
Run Code Online (Sandbox Code Playgroud)

由于a通常很大,我想避免显式循环.frozenset可能会建议映射到s,但我不确定这是否过度.

python list

14
推荐指数
2
解决办法
5763
查看次数

pylint 和预提交钩子无法导入

我的项目结构如下所示:

project/
   app/
      main.py
   venv/
   .pylintrc
   .pre-commit-config.yaml
Run Code Online (Sandbox Code Playgroud)

当我尝试编辑project/app/main.py但失败时

Unable to import 'psycopg2' (import-error)
Run Code Online (Sandbox Code Playgroud)

但是当我试图直接对这个文件进行 pylint 时,它可以工作。

.pre-commit-config.yaml 看起来像这样:

-   repo: https://github.com/PyCQA/pylint
    rev: pylint-2.4.2
    hooks:
    -   id: pylint
Run Code Online (Sandbox Code Playgroud)

pylint pre-commit pre-commit-hook pre-commit.com

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

CMake on Linux:"目标平台不支持动态链接"

我很简单 CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(VTK REQUIRED)
PROJECT(test CXX)
Run Code Online (Sandbox Code Playgroud)

那真的什么都没做.正确找到VTK包/usr/lib/vtk-5.8/VTKConfig.cmake.该文件包含许多类型的语句

ADD_LIBRARY(foobar SHARED IMPORTED)
Run Code Online (Sandbox Code Playgroud)

表示共享库libfoobar.so需要在可执行文件中链接.

然而,在使用上述脚本创建Makefile时,CMake会抱怨

CMake Warning (dev) at /usr/lib/vtk-5.8/VTKTargets.cmake:244 (ADD_LIBRARY):
  ADD_LIBRARY called with SHARED option but the target platform does not
  support dynamic linking.  Building a STATIC library instead.  This may lead
  to problems.
Call Stack (most recent call first):
  /usr/lib/vtk-5.8/VTKConfig.cmake:200 (INCLUDE)
  /usr/share/cmake-2.8/Modules/FindVTK.cmake:73 (FIND_PACKAGE)
  CMakeLists.txt:4 (FIND_PACKAGE)
This warning is for project developers.  Use -Wno-dev to suppress it
Run Code Online (Sandbox Code Playgroud)

这个警告意味着什么,它是如何处理的?

这是一个使用CMake 2.8.9的Linux系统.虽然对于包含的所有软件包都会显示此错误消息ADD_LIBRARY(foobar SHARED IMPORTED),但此处将使用VTK-5.8作为示例.

cmake dynamic-linking static-linking

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

python没有安装setuptools的install_requires中列出的依赖项

我写了一个依赖于openpyxl的python模块.我希望使用setuptools自动将openpxyl安装为依赖项.我读到正确的方法是在setup.py脚本中包含以下内容:

setup(name='methpipe',
    version=find_version("lala", "__init__.py"),
    description='Utilities',
    author='Jonathan T',
    author_email='jt@lala.com',
    url='https://git.com...',
    packages=find_packages(),
    install_requires=[
        'openpxyl = 2.3.3',
    ],
    scripts=["bin/submit_run_full.py"],
    cmdclass=dict(install=my_install)
)
Run Code Online (Sandbox Code Playgroud)

所以我打包了我的模块python setup.py sdist,拿了*.tar.gz文件,解压缩它,然后运行python setup.py install,并且openpyxl没有安装!

我在这做错了什么?

python pip setuptools

12
推荐指数
1
解决办法
3014
查看次数

跳过 pathlib glob 中的隐藏文件和目录

from pathlib import Path

path = Path("/my/path")
for p in path.rglob("*"):
    print(p)
Run Code Online (Sandbox Code Playgroud)

我可以获得 中的所有文件和目录/my/path。如何跳过隐藏的文件和目录?

file
.hidden_file
dir /
   file
   .hidden_file
.hidden_dir / 
   file
   .hidden_file
Run Code Online (Sandbox Code Playgroud)

我只想得到

file
dir /
   file
Run Code Online (Sandbox Code Playgroud)

python pathlib

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