小编Kur*_*ehr的帖子

使用Go regex中的命名匹配项

我来自python,所以我可能只是没有以正确的方式看待它.我想创建一个相当复杂的正则表达式,并能够按名称访问字段匹配.我似乎无法找到一个好例子.我设法得到的最接近的是:

package main

import (
  "fmt"
  "regexp"
)

var myExp = regexp.MustCompile(`(?P<first>\d+)\.(\d+).(?P<second>\d+)`)

func main() {
  fmt.Printf("%+v", myExp.FindStringSubmatch("1234.5678.9"))

  match := myExp.FindStringSubmatch("1234.5678.9")
    for i, name := range myExp.SubexpNames() {
        fmt.Printf("'%s'\t %d -> %s\n", name, i, match[i])
    }
    //fmt.Printf("by name: %s %s\n", match["first"], match["second"])
}
Run Code Online (Sandbox Code Playgroud)

注释掉的行是我期望访问python中的命名字段的方式.什么是相同的方式来做到这一点?或者,如果我需要将匹配转换为地图,那么制作然后访问地图最常用的方法是什么?

regex go

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

在numpy数组中快速就地替换某些值

必须有更快的方法来替换价值,对吗?我有一个2D数组代表一个高程/水深测量网格.我想用NAN替换0以上的任何东西,这种方式超级慢:

for x in range(elevation.shape[0]):
    for y in range(elevation.shape[1]):
        if elevation[x,y] > 0:
            elevation[x,y] = numpy.NAN
Run Code Online (Sandbox Code Playgroud)

看起来这是一个更好的方式!

python performance numpy

16
推荐指数
1
解决办法
3082
查看次数

emacs elisp中的简单tcp客户端示例?

我正在尝试学习emacs elisp并尝试编写一个小程序来连接到TCP/IP端口并处理返回的记录.在一种情况下,我将解析CSV数据,而在另一种情况下,我将解析JSON(例如来自GPSD,而json.el谢天谢地附带了emacs).我查看了echo-server示例,但我正在寻找一个客户端示例,该示例显示了与make-network-process和处理面向行的数据的连接.它不是http,所以我不能同时使用url-retrieve-retrieve.

我的elisp技能非常弱,所以我正在寻找真正基本的例子.

谢谢!

emacs elisp tcpclient

12
推荐指数
3
解决办法
2563
查看次数

如何在null命名空间节点上使用lxml中的xpath?

使用lxml处理xml文档中某些节点上缺少命名空间的最佳方法是什么?我是否应首先修改所有无命名节点以添加"gmd"名称,然后将树属性更改为http://www.isotc211.org/2005/gmd为"gmd"?如果是这样,有没有一个干净的方法来做lxml或其他相对干净/安全的东西?

from lxml import etree
nsmap = charts_tree.nsmap
nsmap.pop(None) # complains without this on the xpath with
# TypeError: empty namespace prefix is not supported in XPath
len (charts_tree.xpath('//*/gml:Polygon',namespaces=nsmap))
# 1180
len (charts_tree.xpath('//*/DS_DataSet',namespaces=nsmap))
# 0 ... Bummer!
len (charts_tree.xpath('//*/DS_DataSet'))
# 0 ... Also a bummer
Run Code Online (Sandbox Code Playgroud)

例如http://www.charts.noaa.gov/ENCs/ENCProdCat_19115.xml

<DS_Series xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gsr="http://www.isotc211.org/2005/gsr" xmlns:gss="http://www.isotc211.org/2005/gss" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd">
<composedOf>
    <DS_DataSet>
        <has>
            <MD_Metadata>
                <parentIdentifier>
                    <gco:CharacterString>NOAA ENC Product Catalog</gco:CharacterString>
                </parentIdentifier>
...
<EX_BoundingPolygon>
    <polygon>
        <gml:Polygon gml:id="US1AK90M_P1">
            <gml:exterior>
                <gml:LinearRing>
                    <gml:pos>67.61505 -178.99979</gml:pos>
                    <gml:pos>73.99999 …
Run Code Online (Sandbox Code Playgroud)

xpath lxml xml-namespaces

12
推荐指数
1
解决办法
3494
查看次数

如何投影和重新采样网格以与GDAL python匹配另一个网格?

澄清:我在某种程度上忽略了关键方面:不使用os.system或subprocess - 只是python API.

我正在尝试转换NOAA GTX偏移网格的一部分以进行垂直基准转换,而不是完全遵循如何在GDAL中使用python执行此操作.我想采用一个网格(在这种情况下是一个Bathymetry归属网格,但它可能是一个geotif)并将其用作我想要做的模板.如果我能做到这一点,我觉得它将极大地帮助人们使用这种类型的数据.

这就是我所拥有的绝对无效的东西.当我在生成的目标数据集(dst_ds)上运行gdalinfo时,它与源网格BAG不匹配.

from osgeo import gdal, osr

bag = gdal.Open(bag_filename)
gtx = gdal.Open(gtx_filename)

bag_srs = osr.SpatialReference()
bag_srs.ImportFromWkt(bag.GetProjection())

vrt = gdal.AutoCreateWarpedVRT(gtx, None, bag_srs.ExportToWkt(), gdal.GRA_Bilinear,  0.125)

dst_ds = gdal.GetDriverByName('GTiff').Create(out_filename, bag.RasterXSize, bag.RasterYSize,
                                            1, gdalconst.GDT_Float32)
dst_ds.SetProjection(bag_srs.ExportToWkt())
dst_ds.SetGeoTransform(vrt.GetGeoTransform())

def warp_progress(pct, message, user_data):
  return 1

gdal.ReprojectImage(gtx, dst_ds, None, None, gdal.GRA_NearestNeighbour, 0, 0.125, warp_progress, None)
Run Code Online (Sandbox Code Playgroud)

示例文件(但它们重叠的任何两个网格,但在不同的投影中都会这样做):

命令行等同于我正在尝试做的事情:

gdalwarp -tr 2 -2 -te 369179 4773093 372861 4775259 -of VRT -t_srs EPSG:2960 \
     MENHMAgome01_8301/mllw.gtx  mllw-2960-crop-resample.vrt
gdal_translate mllw-2960-crop-resample.{vrt,tif}
Run Code Online (Sandbox Code Playgroud)

python gis raster osgeo gdal

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

从struct timespec转换为std :: chrono ::?

我有一个struct timespec值的流.我想将它们转换为本机C++ 11表示,但我完全被chrono扭转了.什么是最好的目标以及如何从struct timespec或struct timeval到达那里,因为这是一个简单的转换,微秒对于这些时间是否足够好?我认为我想要达到这个目标,对吧?的std ::时辰:: SYSTEM_CLOCK :: time_point

在这种情况下,timespec是来自GPS的UNIX时间.是的,他们使用的是4字节秒(在内存中签名转换后的格式,然后写成无符号格式),它将被固定到2038年.

作为参考,我将把它添加到gsf的C++阅读器中

c++ time c++-chrono

10
推荐指数
1
解决办法
4331
查看次数

val!= std :: numeric_limits <double> :: infinity()或!isinf(val)或isfinite(val)

这可能是自行车脱落,但也许有一些有趣的东西让我失踪......

如果一个类初始化一个成员val,std::numeric_limits<double>::infinity()然后想要检查val是否已被更改为有效的东西(+/- inf在这里无效),这3种方法的权衡是什么,我是否错过任何其他有趣的方法来解决这个问题.(为了便于阅读,删除了const.)

bool IsInit() { return MinX != std::numeric_limits<double>::infinity(); }  // a

bool IsInit() { return !std::isinf(MinX); }  // b

bool IsInit() { return std::isfinite(MinX); }  // c
Run Code Online (Sandbox Code Playgroud)

现在代码是C++ 03,但是如何使用C++ 11,C++ 14和C++ 17来改变选项.例如,使用C++ 17,这段代码可能就是这样std::optional<double> val.或者安静NaN是一个更安全的赌注,只是因为+/- inf在未来变得有效?

当我在阅读此代码的补丁时出现了这个问题:

为便于参考:

相关类型:

c++ nan infinity numeric-limits c++11

8
推荐指数
1
解决办法
863
查看次数

matplotlib hist而忽略特定的无数据值

我有一个2D numpy数组,1.0e6作为无数据值.我想生成数据的直方图,虽然我已经成功,但这不是最好的方法.

from matplotlib import pyplot
import sys

eps = sys.float_info.epsilon
no_data = 1.0e6

e_data = elevation.reshape(elevation.size)
e_data_clean = [ ]

for i in xrange(len(e_data)):
    val = e_data[i]
    # floating point equality check for val aprox not equal no_data
    if val > no_data + eps and val < no_data - eps:
        e_data_clean.append(val)

pyplot.hist(e_data_clean, bins=100)
Run Code Online (Sandbox Code Playgroud)

似乎应该有一个干净的(和更快的一个衬垫为此).在那儿?

python numpy matplotlib

6
推荐指数
1
解决办法
3077
查看次数

像文本一样转义org-mode脚注

我在组织模式文件中有"[16]",这是你在ipython shell中看到的文本.如何转义该文本以使其不生成组织模式脚注?它在一个示例块中很好,但在一般文本中没有.第一个[16]是麻烦,到目前为止我尝试过的所有内容都没有在导出文件时在html输出中产生直接的正常"[16]".

#+BEGIN_SRC python
def setfrequency():
    print 'Setting frequency'
    # Write code here to set the frequency

setfrequency()
#+END_SRC

# This next line is the footnote problem
Run it again and you should see this, but the command number [16]
will be different for you:

#+BEGIN_EXAMPLE 
In [16]: run sonar  # This does not export as a footnote.
Setting frequency
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)

谢谢!

org-mode

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

在示例块内部转义org-mode示例块

如果我在组织模式文档中写关于emacs org-mode,我该如何正确地逃避示例.例如

#+BEGIN_EXAMPLE 
#+BEGIN_EXAMPLE 
* This is a heading
#+END_EXAMPLE
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)

应该表明

#+BEGIN_EXAMPLE  
* This is a heading
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)

但我需要以某种方式逃避#+ END_EXAMPLE.我在手册中找不到它.

谢谢!

org-mode

4
推荐指数
1
解决办法
1359
查看次数