我们from module import function称之为FMIF编码风格.
我们import module称之为IM编码风格.
我们from package import module称之为FPIM编码风格.
为什么IM + FPIM被认为是比FMIF更好的编码风格?(请参阅此帖子以获取此问题的灵感.)
以下是一些让我更喜欢FMIF而非IM的标准:
chisquare(...)看起来比可读性更强 scipy.stats.stats.chisquare(...).虽然这是一个主观标准,但我认为大多数人会同意.
function从alt_module不是module我需要改变只有一条线路:from alt_module import function.如果我使用IM,我需要更改许多行代码.
我对IM + FPIM可能比FMIF更好的所有原因感兴趣,但特别是,我有兴趣详细说明这里提到的以下几点:
IM的优点:
非常感谢.
什么是这样格式化python十进制的好方法?
1.00 - > '1'
1.20 - > '1.2'
1.23 - > '1.23'
1.234 - > '1.23'
1.2345 - > '1.23'
例如,如果我有以下声明:
if( foo1 or foo2)
...
...
Run Code Online (Sandbox Code Playgroud)
如果foo1为true,python会检查foo2的条件吗?
当我运行此代码时
import pandas as pd
import numpy as np
def add_prop(group):
births = group.births.astype(float)
group['prop'] = births/births.sum()
return group
pieces = []
columns = ['name', 'sex', 'births']
for year in range(1880, 2012):
path = 'yob%d.txt' % year
frame = pd.read_csv(path, names = columns)
frame['year'] = year
pieces.append(frame)
names = pd.concat(pieces, ignore_index = True)
total_births = names.pivot_table('births', rows = 'year', cols = 'sex', aggfunc = sum)
total_births.plot(title = 'Total Births by sex and year')
Run Code Online (Sandbox Code Playgroud)
我没有情节.这是来自Wes McKinney关于使用Python进行数据分析的书.谁能指出我正确的方向?
当我输入前面带有0的小整数到python时,它们会产生奇怪的结果.为什么是这样?
>>> 011
9
>>> 0100
64
>>> 027
23
Run Code Online (Sandbox Code Playgroud)
注意:Python版本2.7.3我在Python 3.0中对此进行了测试,显然现在这是一个错误.所以这是版本特定的.
编辑:他们显然仍然是整数:
>>> type(027)
`<type 'int'>`
Run Code Online (Sandbox Code Playgroud) 我正在尝试计算一些代码.首先我用了一个时间装饰器:
#!/usr/bin/env python
import time
from itertools import izip
from random import shuffle
def timing_val(func):
def wrapper(*arg, **kw):
'''source: http://www.daniweb.com/code/snippet368.html'''
t1 = time.time()
res = func(*arg, **kw)
t2 = time.time()
return (t2 - t1), res, func.__name__
return wrapper
@timing_val
def time_izip(alist, n):
i = iter(alist)
return [x for x in izip(*[i] * n)]
@timing_val
def time_indexing(alist, n):
return [alist[i:i + n] for i in range(0, len(alist), n)]
func_list = [locals()[key] for key in locals().keys()
if callable(locals()[key]) and key.startswith('time')]
shuffle(func_list) # …Run Code Online (Sandbox Code Playgroud) TL/DR:
import gc, sys
print len(gc.get_objects()) # 4073 objects in memory
# Attempt to unload the module
import httplib
del sys.modules["httplib"]
httplib = None
gc.collect()
print len(gc.get_objects()) # 6745 objects in memory
Run Code Online (Sandbox Code Playgroud)
更新 我已经与Python开发人员联系了这个问题,事实上,"未来五年" 无法完全卸载模块.(见链接)
请接受Python确实不支持在2.x中卸载严重,基本,不可克服的技术问题的模块.
在我最近在我的应用程序中搜索memleak期间,我将其缩小到模块,即我无法收集卸载的模块.使用下面列出的任何方法卸载模块会在内存中留下数千个对象.换句话说 - 我无法在Python中卸载模块...
剩下的问题是尝试以某种方式垃圾收集模块.
我们试试吧:
import gc
import sys
sm = sys.modules.copy() # httplib, which we'll try to unload isn't yet
# in sys.modules, so, this isn't the source of problem
print len(gc.get_objects()) # 4074 objects in …Run Code Online (Sandbox Code Playgroud) 我在Python中执行某些SQL时遇到问题,尽管类似的SQL在mysql命令行中工作正常.
该表如下所示:
mysql> SELECT * FROM foo;
+-------+-----+
| fooid | bar |
+-------+-----+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
+-------+-----+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我可以从mysql命令行执行以下SQL查询,没有问题:
mysql> SELECT fooid FROM foo WHERE bar IN ('A','C');
SELECT fooid FROM foo WHERE bar IN ('A','C');
+-------+
| fooid |
+-------+
| 1 |
| 3 |
+-------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在Python中执行相同操作时,我没有获得任何行,而我期望有2行: …
有没有办法将ndy中的2d数组切成较小的2d数组?
例
[[1,2,3,4], -> [[1,2] [3,4]
[5,6,7,8]] [5,6] [7,8]]
Run Code Online (Sandbox Code Playgroud)
所以我基本上想要将2x4阵列减少为2个2x2阵列.寻找用于图像的通用解决方案.
我从减去两个日期时间得到了一个timedelta对象.我需要将此值作为浮点进行进一步计算.我发现的所有内容都可以使用浮点计算,但结果仍然是timedelta对象.
time_d = datetime_1 - datetime_2
time_d_float = float(time_d)
Run Code Online (Sandbox Code Playgroud)
不起作用.
python ×10
datetime ×1
decimal ×1
matplotlib ×1
memory-leaks ×1
mysql ×1
numpy ×1
pandas ×1
python-2.7 ×1
python-2.x ×1
timedelta ×1
timeit ×1
timing ×1