小编Pet*_*mit的帖子

'sdist'.tar.gz发行版和蟒蛇蛋有什么区别?

我有点困惑.似乎有两种不同类型的Python包,源代码分发(setup.py sdist)和egg分发(setup.py bdist_egg).

两者似乎只是具有相同数据的档案,即python源文件.一个区别是pip,最推荐的包管理器无法安装鸡蛋.

两者之间的区别是什么?分发我的包的方式是什么?

(注意,我不想通过PyPI分发我的包,但我想使用从PyPI获取依赖关系的包管理器)

python egg sdist

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

如何将python dict与多处理同步

我使用Python 2.6和多处理模块进行多线程处理.现在我想要一个同步的dict(我真正需要的唯一原子操作是值上的+ =运算符).

我应该用multiprocessing.sharedctypes.synchronized()调用来包装dict吗?还是另一种方式去?

python dictionary multiprocessing

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

将3d矩阵重塑为2d矩阵

n-by-m-by-t在MATLAB中有一个3d矩阵()表示n-by-m一段时间内网格中的测量值.我想有一个二维矩阵,其中空间信息不见了,只有n*m随着时间的推移测量t留(即:n*m-by-t)

我怎样才能做到这一点?

matlab matrix reshape

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

为什么在Python版本之间播种随机生成器不稳定?

我试图在random.random()安装了不同python3版本的不同系统上重现python的随机序列.

这应该很容易,因为文档说:

大多数随机模块的算法和种子函数都会在Python版本中发生变化,但保证两个方面不会改变:

  • 如果添加了新的播种方法,则将提供向后兼容的播种机.
  • 当兼容的播种机被赋予相同的种子时,生成器的random()方法将继续产生相同的序列.

所以我希望下面的代码总是打印相同的10个数字,无论具体的python3版本如何:

import sys
print(sys.version)

from random import seed, random

seed(str(1))
for i in range(10):
    print(random())
Run Code Online (Sandbox Code Playgroud)

但是,在两台不同的机器上进行测试:

3.2.3 (default, May  3 2012, 15:51:42) 
[GCC 4.6.3]
0.4782479962566343
0.044242767098090496
0.11703586901195051
0.8566892547933538
0.2926790185279551
0.0067328440779825804
0.0013279506360178717
0.22167546902173108
0.9864945747444945
0.5157002525757287
Run Code Online (Sandbox Code Playgroud)

3.1.2 (release31-maint, Dec  9 2011, 20:59:40)  
[GCC 4.4.5]
0.0698436845523
0.27772471476
0.833036057868
0.35569897036
0.36366158783
0.722487971761
0.963133581734
0.263723867191
0.451002768569
0.0998765577881
Run Code Online (Sandbox Code Playgroud)

给出不同的结果.

为什么是这样?有没有办法让它工作(即两次获得相同的随机序列?)

python random seed python-3.x

22
推荐指数
2
解决办法
2741
查看次数

修改数据作为alembic升级的一部分

我想修改一些数据库数据作为alembic升级的一部分.

我以为我可以在迁移升级中添加任何代码,但以下操作失败:

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.add_column('smsdelivery', sa.Column('sms_message_part_id', sa.Integer(), sa.ForeignKey('smsmessagepart.id'), nullable=True))
    ### end Alembic commands ###

    from volunteer.models import DBSession, SmsDelivery, SmsMessagePart

    for sms_delivery in DBSession.query(SmsDelivery).all():
        message_part = DBSession.query(SmsMessagePart).filter(SmsMessagePart.message_id == sms_delivery.message_id).first()
        if message_part is not None:
            sms_delivery.sms_message_part = message_part
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

sqlalchemy.exc.UnboundExecutionError: Could not locate a bind configured on mapper Mapper|SmsDelivery|smsdelivery, SQL expression or this Session
Run Code Online (Sandbox Code Playgroud)

我真的不明白这个错误.我该如何解决这个问题,或者这样的操作不可能?

python sqlalchemy alembic

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

如何从data.frame中选择具有2个条件的行

我有一个聚合表:

> aggdata[1:4,]
  Group.1 Group.2         x
1       4    0.05 0.9214660
2       6    0.05 0.9315789
3       8    0.05 0.9526316
4      10    0.05 0.9684211
Run Code Online (Sandbox Code Playgroud)

当我有Group.1和Group.2的值时,如何选择x值?

我试过了:

aggdata[aggdata[,"Group.1"]==l && aggdata[,"Group.2"]==lamda,"x"]
Run Code Online (Sandbox Code Playgroud)

但那回复所有的x.

更多信息:我想这样使用:

table = data.frame();
for(l in unique(aggdata[,"Group.1"])) {
    for(lambda in unique(aggdata[,"Group.2"])) {
        table[l,lambda] = aggdata[aggdata[,"Group.1"]==l & aggdata[,"Group.2"]==lambda,"x"]
    }
}
Run Code Online (Sandbox Code Playgroud)

任何更容易的建议,并给予这个结果,我很感激!

r

21
推荐指数
3
解决办法
9万
查看次数

如何删除远程origin/refs/heads/master

不要问我怎么做,但我设法在git存储库中偶然发现了以下远程分支:

$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/refs/heads/master
Run Code Online (Sandbox Code Playgroud)

所有人都指向同一个提交.如何删除不必要的列表 origin/refs/heads/master

我试着做以下事情

$ git push origin :refs/heads/master
error: dst refspec refs/heads/master matches more than one.
Run Code Online (Sandbox Code Playgroud)

但如图所示,这会产生错误.

git remote-branch

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

做什么>!和>>!在tcsh做

在正常的bash重定向中,>将标准输出重定向到文件,在存在时覆盖>>并将标准输出重定向到文件,在存在时附加.

在tcsh(c shell)脚本中,我发现>! >>!正在使用的运算符.这个运营商做了什么?tcsh也有>>>运营商,那有什么区别?

redirect tcsh

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

精确,为什么Matlab和Python numpy会给出如此不同的输出?

我知道基本数据类型,浮点类型(float,double)不能完全保存一些数字.

在将一些代码从Matlab移植到Python(Numpy)时,我发现计算中存在一些显着的差异,我认为它会回到精确度.

采用以下代码,对仅具有非零值的前两个元素进行z标准化500维向量.

Matlab的:

Z = repmat(0,500,1); Z(1)=3;Z(2)=1;
Za = (Z-repmat(mean(Z),500,1)) ./ repmat(std(Z),500,1);
Za(1)
>>> 21.1694
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

from numpy import zeros,mean,std
Z = zeros((500,))
Z[0] = 3
Z[1] = 1
Za = (Z - mean(Z)) / std(Z)
print Za[0]
>>> 21.1905669677
Run Code Online (Sandbox Code Playgroud)

除了格式化在Python中显示更多位数之外,还有一个巨大的差异(imho),大于0.02

Python和Matlab都使用64位数据类型(afaik).Python使用'numpy.float64'和Matlab'double'.

为什么差异如此之大?哪一个更正确?

python statistics matlab floating-point-precision

18
推荐指数
2
解决办法
3130
查看次数

多位向量; 如何找到准确设置n次的位?

我有四个比特向量的集合,例如:

b1 = 00001010
b2 = 10100111
b3 = 10010010
b4 = 10111110
Run Code Online (Sandbox Code Playgroud)

我想得到那些在给定位向量的0,1,2,3或4中设置的位的掩码.因此m0将是未在四个位向量中的任何一个中设置的位掩码,m3是在三个位向量中设置的那些位的掩码,等等:

m0 = 01000000
m1 = 00000001
m2 = 00111100
m3 = 10000000
m4 = 00000010
Run Code Online (Sandbox Code Playgroud)

使用按位运算符查找这些掩码的最快方法是什么?

我假设它们对0和4位的操作最少:

m0 = ~(b1 | b2 | b3 | b4)  // 4 ops
m4 = b1 & b2 & b3 & b4     // 3 ops
Run Code Online (Sandbox Code Playgroud)

对于其他选项,我不太确定我的方法操作最少:

m1 = ((b1 ^ b2) & ~(b3 | b4)) | (~(b1 | b2) & (b3 ^ b4)) // 9 operations
m2 = ((b1 ^ …
Run Code Online (Sandbox Code Playgroud)

c performance bit-manipulation bitwise-operators bitvector

17
推荐指数
6
解决办法
752
查看次数