如何确定Numpy数组是否包含字符串?数组a中
a = np.array('hi world')
Run Code Online (Sandbox Code Playgroud)
具有数据类型dtype('|S8'),其中8是指字符串中的字符数.
我不知道正则表达式(例如re.match('\|S\d+', a.dtype))在这里是如何工作的,因为数据类型不是简单的'|S8'.
干杯,尼科
我在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的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方法吗?
我有中等大小的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"
编译简单的东西时
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.
这是什么原因,是否有推荐的修复?
我有一个(大)整数列表列表,例如,
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,但我不确定这是否过度.
我的项目结构如下所示:
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) 我很简单 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作为示例.
我写了一个依赖于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没有安装!
我在这做错了什么?
和
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)