我想在numpy中用NaN替换一个数字,我正在寻找像numpy.nan_to_num这样的函数,反之亦然.
处理不同的数组时,该数字可能会发生变化,因为每个数组都可以唯一定义NoDataValue.我看到人们使用字典,但阵列很大,充满了正面和负面的浮动.我怀疑尝试将所有这些加载到任何东西来创建密钥是没有效率的.
我尝试使用以下和numpy要求我使用any()或all().我意识到我需要迭代元素,但希望内置函数可以实现这一点.
def replaceNoData(scanBlock, NDV):
for n, i in enumerate(array):
if i == NDV:
scanBlock[n] = numpy.nan
Run Code Online (Sandbox Code Playgroud)
NDV是GDAL没有数据值,数组是一个numpy数组.
是一个掩盖阵列的方式可能去?
Python的内置coerce函数有哪些常见用途?如果根据文档我不知道type数值,我可以看到应用它,但是还存在其他常见用法吗?我猜这也是在执行算术计算时调用的,例如.它是一个内置函数,所以可能它有一些潜在的常见用法?coerce() x = 1.0 +2
Anaconda python是通过bash脚本安装的(在linux中).我正在尝试使用Vagrant配置来安装Anacaonda Python.
在bash脚本中(遵循文档bootstrap.sh示例)我有一个bootstrap.sh脚本:
wget 安装脚本chmod +x 使其可执行./<script>.sh 安装. 安装此方法失败,因为安装有一些提示,其中一个需要非默认答案.
是否可以通过bash脚本自动化安装?如果没有,是否有必要使用像Puppet这样的东西?我根本不认识Puppet,所以试图避免使用......也许是时候挖掘了?
最终目标是发布Vagrant文件而不是托管Vagrant框.
PS我最初的,微弱的尝试使用了linux yes命令,但必须存在更好的方法!
这是一个在函数调用中使用关键字参数的简单示例.没什么特别的.
def foo(arg1,arg2, **args):
print arg1, arg2
print (args)
print args['x']
args ={'x':2, 'y':3}
foo(1,2,**args)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样打印:
1 2
{'y': 3, 'x': 2}
2
Run Code Online (Sandbox Code Playgroud)
我试图将相同的样式关键字参数传递给多处理任务,但在args列表中使用**是语法错误.我知道我的函数stretch()将采用两个位置参数和n个关键字参数.
pool = [multiprocessing.Process(target=stretch, args= (shared_arr,slice(i, i+step),**args)) for i in range (0, y, step)]
Run Code Online (Sandbox Code Playgroud)
是否可以将关键字参数传递给multiprocessing.Process?如果是这样,怎么样?如果没有,为什么?
移植一些Fortran 77代码.似乎REAL变量被分配给INTEGER变量.我没有运行此代码的方法,并想知道在以下情况下的行为是什么:
REAL*4 A
A = 123.25
B = INT(A)
Run Code Online (Sandbox Code Playgroud)
B = 123或B = 124?
在0.5分处怎么样?
REAL*4 C
C = 123.5
D = INT(C)
Run Code Online (Sandbox Code Playgroud)
D = 123或D = 123.5?
是否可以使用重组文本将图像放置在标题内?
就像是:
Introduction .. image:: path/to/img.png
---------------------------------------
Run Code Online (Sandbox Code Playgroud)
这呈现为文本,即不解析图像语法.我没有看到任何这样的例子让我相信这可能是不可能的,但也许有人有解决办法.
我打算输出到HTML(因此可以对派生的CSS进行修改,但我更愿意改变RST源.这是因为我还打算输出到pdf(latex).
我正在使用Numpy进行图像处理,特别是运行标准偏差拉伸.这读取X列数,找到Std.并执行百分比线性拉伸.然后它迭代到列的下一个"组"并执行相同的操作.输入图像是1GB,32位单波段光栅,处理(小时)需要相当长的时间.下面是代码.
我意识到我有3个嵌套for循环,这可能是瓶颈发生的地方.如果我在"框"中处理图像,也就是说加载一个[500,500]的数组并且迭代图像处理时间非常短.不幸的是,相机错误要求我迭代非常长的条带(52,000 x 4)(y,x)以避免条带化.
任何关于加快这一点的建议都将受到赞赏:
def box(dataset, outdataset, sampleSize, n):
quiet = 0
sample = sampleSize
#iterate over all of the bands
for j in xrange(1, dataset.RasterCount + 1): #1 based counter
band = dataset.GetRasterBand(j)
NDV = band.GetNoDataValue()
print "Processing band: " + str(j)
#define the interval at which blocks are created
intervalY = int(band.YSize/1)
intervalX = int(band.XSize/2000) #to be changed to sampleSize when working
#iterate through the rows
scanBlockCounter = 0
for i in xrange(0,band.YSize,intervalY):
#If the next i …Run Code Online (Sandbox Code Playgroud) 假设n维的观察阵列被重新整形为2d阵列,每行是一个观察集.使用这种重塑方法,np.polyfit可以计算整个ndarray(矢量化)的二阶拟合系数:
fit = np.polynomial.polynomialpolyfit(X, Y, 2)
Run Code Online (Sandbox Code Playgroud)
其中Y是形状(304000,21),X是矢量.这导致(304000,3)系数数组合适.
使用迭代器可以调用np.polyval(fit, X)每一行.当存在矢量化方法时,这是低效的.可以在fit结果被应用到整个观察阵列不反复?如果是这样,怎么样?
这与这个SO问题一致.
我想知道是否可以在python字典中存储numpy切片表示法.就像是:
lookup = {0:[:540],
30:[540:1080],
60:[1080:]}
Run Code Online (Sandbox Code Playgroud)
例如slice(0,10,2),可以使用本机python切片语法,但我无法存储更复杂的切片.例如,多维的东西[:,:2,:, :540].
我目前的工作是将值存储为元组,然后将这些值解压缩到必要的切片中.
使用Python 2.x.
是否可以在非数组中获取非零元素的长度而不迭代数组或屏蔽数组.速度是计算长度的主要目标.
基本上,像len(array).where(array != 0).
如果它改变了答案,则每行将以零开头.数组用零填充在对角线上.
python ×8
numpy ×5
arrays ×2
gdal ×2
arguments ×1
built-in ×1
dictionary ×1
for-loop ×1
fortran ×1
nan ×1
puppet ×1
python-2.7 ×1
python-2.x ×1
rounding ×1
scipy ×1
slice ×1
vagrant ×1
vagrantfile ×1