小编Mik*_*ler的帖子

Python - GUI2EXE - AttributeError: 'module' 对象没有属性 'Popen'

我使用 Python 2.7 和 py2exe,最近我下载了 gui2exe 最新版本 (5.3)。但是当我尝试执行该gui2exe.py文件时,它给了我一个错误:

AttributeError: 'module' object has no attribute 'Popen'
Run Code Online (Sandbox Code Playgroud)

我研究了很多,但从未得到任何解决方案。

请帮忙。

python user-interface py2exe python-2.7

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

将数据附加到现有的pytables表

我是PyTables的新手,并实现了一些从Pytables中的表中插入和检索数据的基本技术.但是,我不确定如何在现有的PyTables表中插入数据,因为我在教程中读取/获取的所有内容都是创建一个新表(使用h5file.createTable()方法).这是教程有关将数据插入从头创建的PytTables表的基本代码:

h5file = openFile("tutorial1.h5", mode = "w", title = "Test file")
group = h5file.createGroup("/", 'detector', 'Detector information')
table = h5file.createTable(group, 'readout', Particle, "Readout example")

for i in xrange(10):
    particle['name']  = 'Particle: %6d' % (i)
    particle['TDCcount'] = i % 256
    particle['ADCcount'] = (i * 256) % (1 << 16)
    particle['grid_i'] = i
    particle['grid_j'] = 10 - i
    particle['pressure'] = float(i*i)
    particle['energy'] = float(particle['pressure'] ** 4)
    particle['idnumber'] = i * (2 ** 34)
    # Insert a new particle …
Run Code Online (Sandbox Code Playgroud)

python pytables

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

为 pytest 测试方法编写装饰器

假设以下结构:

class SetupTestParam(object):
    def setup_method(self, method):
        self.foo = bar()

    @pytest.fixture
    def some_fixture():
        self.baz = 'foobar'
Run Code Online (Sandbox Code Playgroud)

SetupTestParam用作测试类的父类。

class TestSomething(SetupTestParam):
    def test_a_lot(self, some_fixture):
        with self.baz as magic:
            with magic.fooz as more_magic:
                 blah = more_magic.much_more_magic() # repetative bleh
            ... # not repetative code here
            assert spam == 'something cool'
Run Code Online (Sandbox Code Playgroud)

现在,编写测试变得重复(使用语句),我想编写一个装饰器来减少代码行数。但是pytest和函数签名有问题。

我发现了应该有帮助的图书馆,但我无法让它工作。

classmethodSetupTestParam课堂上做了一个。

@classmethod
@decorator.decorator
def this_is_decorator(cls, f):
    def wrapper(self, *args, **kw):
        with self.baz as magic:
            with magic.fooz as more_magic:
                 blah = more_magic.much_more_magic() # repetative bleh …
Run Code Online (Sandbox Code Playgroud)

python decorator pytest

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

计算多列的平均值,忽略NaN pandas numpy

我有一个基本的价值表:

import pandas as pd
import numpy as np
test = pd.read_csv('mean_test.csv')
test.replace('n/a',np.nan)
test


value1  value2  value3
1   9   5
5   NaN 4
9   55  NaN
NaN 4   9
Run Code Online (Sandbox Code Playgroud)

我想计算三个值的平均值,忽略NaN,所以对于第二行,它将是(5 + 4)/ 2.因此我不能使用.replace函数在NaN的位置放置零.我已经搜索了其他一些问题,但找不到任何涵盖此问题的内容.我错过了一些明显的东西吗

python pandas

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

价值差异的功能

Python中是否有一个函数来获取列表中两个或多个值之间的差异?那么,在这两个列表中:

list1 = [1, 5, 3, 7]
list2 = [4, 2, 6, 4]
Run Code Online (Sandbox Code Playgroud)

我需要计算list1和list2中每个值之间的差异.

for i in list1:
    for ii in list2:
       print i -ii
Run Code Online (Sandbox Code Playgroud)

这给出了负值,但我希望两个列表的值之间的减法仅从最高值到最低值,以便不获得负值.

对于上面的列表,我希望输出为[3, 3, 3, 3].

谢谢.

python list python-2.7 python-3.x

5
推荐指数
3
解决办法
149
查看次数

定义多个相同类型对象的内存效率更高的方法

所以,我正在涉足等离子体模拟的世界。现在,虽然我知道顶级模拟是用 Fortran 编写的,并且具有超内存效率的子例程和专用代码,但我希望只运行一些低级模拟。

我的问题是,在时变环境(好吧,时间步进)中模拟大量粒子时,跟踪所有数据是一个技巧。我之前使用过多维数组——使用粒子的列号和属性的行号,但是这感觉很笨拙。然而,它似乎执行得更快。

我最近尝试定义我自己的类,但是作为一个 Python 新手,我可能以一种非常低效的方式做到了。对于 3 维中的每个粒子,我需要能够存储粒子的位置、速度和力(一旦代码变得更复杂,就有可能添加更多变量)。使用我对类的了解,我定义了一个particle对象(我认为),它使我的代码更易于阅读和遵循:

# Define Particle as a class
class particle():
    def __init__(self, index=0, pos=np.array([0, 0, 0]), vel=np.array([0,0,0]), 
                 F=np.array([0, 0, 0])):
        self.index = index      # Particle index (identifier)
        self.pos = pos          # Position 3-vector
        self.vel = vel          # Velocity 3-vector
        self.F = F              # Net force 3-vector (at particle)
Run Code Online (Sandbox Code Playgroud)

因此,我可以轻松地初始化包含大量这些对象的数组,并以相当简单的方式修改每个值。然而,正如我所提到的,这对于仅涉及少数粒子的模拟运行速度较慢。我将使用我的代码将其与纯粹面向矩阵的方法进行比较,以查看哪种方法在大型模拟中的扩展性更好。

我想我的问题是:以这种方式定义“粒子”是最有效的吗?或者是否有更高效的 CPU/内存方式来定义这样的对象。我想保留它的方法能力(即particle[i].pos = [1,2,3]particle[2].vx[1] = 3),以便我可以为每个粒子设置值,并将它们传递给函数。请记住,我是 Python 新手,所以我可能不会在大型复杂代码上取得巨大成功。

python arrays simulation types class

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

通过列索引而不是列名来调用数据框中的列-Pandas

如何使用数据框中的索引而不是其名称在代码中调用列。

例如,我有数据帧df的列abc

除了调用之外df['a'],我可以使用其列索引来调用它df[1]吗?

python dataframe pandas

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

如何在jupyter中使用%% writefile -a命令在文件中添加换行符?

我使用Jupyter Notebook编写一个小程序。因此,我想将一些单元格写入.py文件。

我用这种魔法%%writefile -a myfile.py。它可以工作,但是问题是内容没有新行添加。因此,我必须myfile.py在运行单元格后手动向其中添加换行符。

如何避免这个问题?

python jupyter

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

错误只有整数标量数组可以转换为标量索引

我正在使用Python 3.6。

我正在尝试这样做:

import numpy as np

def run_11(x):
return x+1

kk = np.arange(1, 17)

for i in range (kk):
     ind = run_11(i)
     print (i)
     print (ind)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

类型错误:只有整数标量数组可以转换为标量索引

我不明白为什么以及如何解决它。任何建议将不胜感激

python python-3.x

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

将额外的字段添加到现有的namedtuple对象并取消pickle

我有一些腌制格式的数据,其中包含以下对象的实例:

Point = namedtuple('Point', ['x',])
Run Code Online (Sandbox Code Playgroud)

现在我想扩展 Point 对象以添加另一个变量“y”,但也要保持它与我已经腌制的数据兼容。

以下是我尝试过的,但似乎失败了。我还尝试通过在创建 Point 对象时将 y 参数设置为可选来使用代码来创建 Point 类,但这效果不佳。关于如何进行的任何想法?

from collections import namedtuple
Point = namedtuple('Point', ['x'])
i = Point(1)
import cPickle
pick=cPickle.dumps(i)
Point = namedtuple('Point', ['x', 'y'])
cPickle.loads(pick)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 22, in __repr__
TypeError: not enough arguments for format string
Run Code Online (Sandbox Code Playgroud)

python pickle namedtuple python-2.7

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