比方说,matplotlib xlabels
中有3行子图,其中一行可以与下一行的标题重叠.一个人必须摆弄pl.subplots_adjust(hspace)
,这很烦人.
是否有一个配方hspace
可以防止重叠并适用于任何nrow?
""" matplotlib xlabels overlap titles ? """
import sys
import numpy as np
import pylab as pl
nrow = 3
hspace = .4 # of plot height, titles and xlabels both fall within this ??
exec "\n".join( sys.argv[1:] ) # nrow= ...
y = np.arange(10)
pl.subplots_adjust( hspace=hspace )
for jrow in range( 1, nrow+1 ):
pl.subplot( nrow, 1, jrow )
pl.plot( y**jrow )
pl.title( 5 * ("title %d " % jrow) ) …
Run Code Online (Sandbox Code Playgroud) 两个具有相同字符的Python字符串,a == b,可以共享内存,id(a)== id(b),或者可以在内存中两次,id(a)!= id(b).尝试
ab = "ab"
print id( ab ), id( "a"+"b" )
Run Code Online (Sandbox Code Playgroud)
在这里,Python认识到新创建的"a"+"b"与已经在内存中的"ab"相同 - 不错.
现在考虑一个N长的州名列表["亚利桑那州","阿拉斯加州","阿拉斯加州","加利福尼亚州......"(在我的案例中为N~500000).
我看到50个不同的id()s⇒每个字符串"Arizona"......只存储一次,很好.
但是将列表写入磁盘并再次读回:"相同"列表现在有N个不同的id()s,内存更多,见下文.
怎么 - 任何人都可以解释Python字符串内存分配?
""" when does Python allocate new memory for identical strings ?
ab = "ab"
print id( ab ), id( "a"+"b" ) # same !
list of N names from 50 states: 50 ids, mem ~ 4N + 50S, each string once
but list > file > mem again: N ids, mem ~ N * (4 + …
Run Code Online (Sandbox Code Playgroud) 嗨,大约两天后我收到此错误:
错误:XMLRPC 请求失败 [代码:-32500] 运行时错误:由于无法管理的负载,PyPI 的 XMLRPC API 目前被禁用,将在不久的将来弃用。有关更多信息,请参阅https://status.python.org/。
我从一些人问,搜查了很多,但我din't kbow是什么问题以及如何解决它我tryed apt update
,并python3 pip install --upgrade pip
通过PIP本身我在使用Android的PIP Termux是工作了一段日前建议...
伙计们,
是否存在Numpy与python不同的陷阱集合,这些点令人困惑且花费时间?
"那一刻我永远不会忘记的恐怖!"
"不过,你会这样说的,"女王说,"如果你不做备忘录的话."
例如,NaN在任何地方总是麻烦.如果您可以在不运行的情况下解释这一点,请给自己一点 -
from numpy import array, NaN, isnan
pynan = float("nan")
print pynan is pynan, pynan is NaN, NaN is NaN
a = (0, pynan)
print a, a[1] is pynan, any([aa is pynan for aa in a])
a = array(( 0, NaN ))
print a, a[1] is NaN, isnan( a[1] )
Run Code Online (Sandbox Code Playgroud)
(我不是那么笨拙,在那里做了很多好工作,只是认为常见问题解答或问题的维基会很有用.)
编辑:我希望收集六个陷阱(人们学习Numpy的惊喜).
然后,如果有共同的问题或更好的常见解释,我们可以谈谈将它们添加到社区Wiki(在哪里?)看起来我们到目前为止还不够.
当我需要处理我的一个宠物项目时,我只是像往常一样克隆存储库(git clone <url>
),编辑我需要的东西,运行测试,更新setup.py
版本,提交,推送,构建包并将它们上传到PyPI.
使用有什么好处pip install -e
?我应该使用它吗?它将如何改善我的工作流程?
如果这有帮助,这是我目前打包并发送给PyPI的两个宠物项目,但从未使用过pip install -e
.一个是纯Python,另一个是Django包.
如何通过使用来改善项目的工作流程或结构pip install -e
?
假设python包A需要B,C和D; 有没有办法列出A→BCD而不加载它们?
Requires
在metadata(yolk -M A
)中经常是不完整的,grr.
可以下载A.tar/A.egg,然后查看A/setup.py,但其中一些非常血腥.
(我认为至少可以获得一级依赖关系;即使是98%的解决方案也会比雪崩下载更好.)
sys.getsizeof( 10000*[x] )
无论x:0,"a",1000*"a",{},我感到惊讶的是40036.
有没有deep_getsizeof
正确考虑共享内存的元素?
(问题来自查看内存数据库表,如范围(1000000) - >省名:列表或字典?)
(Python是2.6.4的mac ppc.)
补充:10000*["密西西比"]是指向一个"密西西比"的10000个指针,正如几个人所指出的那样.试试这个:
nstates = [AlabamatoWyoming() for j in xrange(N)]
Run Code Online (Sandbox Code Playgroud)
其中AlabamatoWyoming() - >一个字符串"Alabama".."怀俄明州".什么是deep_getsizeof(nstates)?
(我们怎么说?
添加25jan:另请参阅when-does-python-allocate-new-memory-for-identical-strings
我有一个大的3d np.ndarray数据,表示以常规网格方式在卷上采样的物理变量(如数组[0,0,0]中的值表示物理坐标系中的值(0,0,0) )).
我想通过在粗网格中插入数据来获得更精细的网格间距.目前我正在使用scipy griddata线性插值,但它很慢(对于20x20x20阵列,约为90秒).为了我的目的,它有点过度设计,允许随机采样体积数据.有什么东西可以利用我的常规间隔数据,以及我想插入的只有一组有限的特定点吗?
当您执行以下操作时,会发生未来警告:
>>> numpy.asarray([1,2,3,None]) == None
Run Code Online (Sandbox Code Playgroud)
目前返回False
,但据我所知,将返回包含[False,False,False,True]
在Numpy的未来版本中的数组.
正如在numpy讨论列表中所讨论的,解决这个问题的方法是测试a is None
.
令我困惑的是,in
与列表相比,具有1D数组的关键字的这种行为:
>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise
object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
Run Code Online (Sandbox Code Playgroud)
编辑(见评论) - 真的有两个不同的问题:
FutureWarning
- 将未来的行为None in numpy.asarray(...)
与现在的行为进行比较?in
来自于list
; 我可以测试我的数组是否包含None
而不将其转换为列表或使用for
循环? Numpy版本是1.9.1,Python 3.4.1
我只想用最简单的术语插入3D数据集.线性插值,最近邻,所有这些就足够了(这是从一些算法开始,所以不需要准确的估计).
在新的scipy版本中,像griddata这样的东西会很有用,但是目前我只有scipy 0.8.所以我有一个"立方体"(data[:,:,:]
,(NixNjxNk))数组,以及一个相同大小的标志(flags[:,:,:,]
,True
或False
)数组.我想插入数据元素的数据,其中flag的对应元素为False,例如使用数据中最近的有效数据点,或者"close by"点的某种线性组合.
数据集中至少有两个维度可能存在较大的间隙.除了使用kdtrees或类似编码完整的最近邻算法之外,我无法真正找到通用的N维最近邻插值器.
python ×9
numpy ×4
matplotlib ×2
memory ×2
packaging ×2
pip ×2
scipy ×2
dependencies ×1
nan ×1
python-3.x ×1