小编Mik*_*ike的帖子

仅安装 pep 518 构建系统要求(构建 sdist)

PEP 518介绍了该pyproject.toml文件,以及描述构建所需工具的部分:

[build-system]
requires = ["setuptools", "wheel", "numpy>=1.13"]
Run Code Online (Sandbox Code Playgroud)

在这里,我告诉构建系统(隐式的 setuptools)我需要安装这三个要求才能运行构建。(是的,我实际上确实需要 numpy 作为构建过程的一部分。)

当我运行时pip wheel,它知道在此文件中查找此部分,安装需求,然后构建轮子。但是 pip 无法创建一个sdist发行版(而且它的维护者似乎不愿意添加一个发行版),所以我需要运行python setup.py sdist. 这就是问题所在:setup.py 不知道它需要 numpy,并且构建失败。

是否有一种标准方法来安装需求,然后构建 sdist?特别是pip已经朝着构建隔离的方向发展了,那么这可以通过隔离来完成吗?如果做不到这一点,我可以创建自己的环境来进行一些隔离;那么,在某些环境中安装需求的最佳方法是什么?

python pip setuptools python-packaging pyproject.toml

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

返回const char*; 静态是多么丑陋?

由于我无法控制的原因,我需要const char*从函数返回,但我不知道char在编译时需要什么.我的解决方案如下:

const char* __str__() {
  static std::string String;
  String = [some fancy stuff];
  return String.c_str();
}
Run Code Online (Sandbox Code Playgroud)

static防止串对退出功能的破坏,但它也意味着记忆棒周围,直到我的程序退出(右?).因为返回的字符串有时可能很大(GB),这可能是一个真正的问题.

我通常不惜一切代价避免使用指针,而且只能static用于班级成员,所以我不能100%确定我在做什么.这保证有效吗?有没有更好的办法?

[这个问题的上下文是使用该__str__方法在python中打印一个复杂的对象.我在我的c ++代码中定义了该方法,然后由SWIG包装.SWIG的例子显示了使用static,但我不清楚这是唯一的方法.我愿意接受建议.]

c c++ python swig

4
推荐指数
2
解决办法
1022
查看次数

如何解决Python中的“没有名为‘四元数’的模块”?

我正在尝试将模块四元数导入到我的代码中,以便能够旋转我的传感器数据。我不断收到错误“没有名为‘四元数’的模块”。

要将四元数模块安装到我的计算机上,我使用命令提示符并键入

> conda activate base
> pip install quaternion
Run Code Online (Sandbox Code Playgroud)

当我跑步时

import quaternion
Run Code Online (Sandbox Code Playgroud)

这是输出:

(base) C:\Users\erapp\Code>C:/Users/erapp/Anaconda3/python.exe c:/Users/erapp/Code/mbl_mc10/code/sensor_prep_utils.py
Traceback (most recent call last):
  File "c:/Users/erapp/Code/mbl_mc10/code/sensor_prep_utils.py", line 1, in <module>
    import quaternion
ModuleNotFoundError: No module named 'quaternion'
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

python import module quaternions

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

Python索引就像MATLAB的结尾/ 2

获取列表的一半,MATLAB有一个非常方便的语法:

x(1:end/2)
Run Code Online (Sandbox Code Playgroud)

我知道python执行此操作的语法是

x[:len(x)/2]
Run Code Online (Sandbox Code Playgroud)

这种情况很好,因为len(x)很容易写.但是当列表的名称很长时(因为它们有时需要),这种语法不仅仅是一种痛苦,而且当存在类似的长名称列表时更是如此.

我知道这是一个真实的镜头,但是python有没有像MATLAB一样的语法选项?

python syntax matlab

2
推荐指数
1
解决办法
9235
查看次数

加快numpy阵列的分析

我有一个python代码,它导入4列txt文件,数字前三列是x,y,z坐标,第四列是该坐标的密度.

下面是读取的代码,转换为ndarray,傅里叶变换该字段,计算距离原点的距离(k =(0,0,0))和变换后的坐标,并取平均值并绘制它们.感谢pandas(用于数据分析的python库)和python FFT,加载256 ^ 3行和傅里叶变换非常快,并在几秒钟内完成.

但是,将加载的txt转换为numpy ndarray,计算平均密度(每个坐标的平均值),以及计算距离原点的距离(k =(0,0,0))需要很长时间.

我认为问题是最后的部分,但我无法弄清楚优化它的方法.

我有一个32核心机器的资源.

有人可以教我如何加速,使它成为一个多进程代码,或类似的东西,以便这些可以很快完成?谢谢.

(如果您是宇宙学家并且需要此代码,您可以使用它,但如果可以,请与我联系.谢谢)

from __future__ import division
import numpy as np

ngridx = 128
ngridy = 128    
ngridz = 128

maxK = max(ngridx,ngridy,ngridz)

#making input file
f = np.zeros((ngridx*ngridy*ngridz,4))

i = 0
for i in np.arange(len(f)):
    f[i][0] = int(i/(ngridy*ngridz))
    f[i][1] = int((i/ngridz))%ngridy
    f[i][2] = int(i%ngridz)
    f[i][3] = np.random.rand(1)
    if i%1000000 ==0:
        print i
#This takes forever
#end making input file

#Thanks to Mike,
a = f[:,3].reshape(ngridx,ngridy,ngridz)

avg =np.sum(f[:,3])/len(f)
a /= …
Run Code Online (Sandbox Code Playgroud)

python performance numpy fft multiprocessing

2
推荐指数
1
解决办法
1653
查看次数

Python将split函数转换回来

我希望我的答案看起来像: Hello World

请注意,它不是一个字符串,因此它周围没有撇号

m = 'Hello World'
w = m.split()
for final in w:
    (final = ??, end = ' ')
Hello World
Run Code Online (Sandbox Code Playgroud)

我想要的代码看起来非常相似,我只是忘记了最终和结束的内容

python split python-3.x

0
推荐指数
1
解决办法
48
查看次数