小编Ric*_*ell的帖子

我更新了我的ipython笔记本要点,但为什么nbviewer没有更新?

我在这里更新了一个ipython笔记本要点:

https://gist.github.com/rsignell-usgs/aa12c2b5e8a448bda780

但是这里的nbviewer链接:

http://nbviewer.ipython.org/gist/rsignell-usgs/aa12c2b5e8a448bda780

还在显示我的旧笔记本.我尝试刷新清除浏览器缓存,但它仍然显示旧笔记本.

它不应该更新?

gist ipython-notebook

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

更快速地将Excel文件读取到pandas数据帧

我有一个14MB的Excel文件和五个工作表我正在阅读Pandas数据帧,虽然下面的代码有效,但需要9分钟!

有没有人有加快速度的建议?

import pandas as pd

def OTT_read(xl,site_name):
    df = pd.read_excel(xl.io,site_name,skiprows=2,parse_dates=0,index_col=0,
                       usecols=[0,1,2],header=None,
                       names=['date_time','%s_depth'%site_name,'%s_temp'%site_name])
    return df

def make_OTT_df(FILEDIR,OTT_FILE):
    xl = pd.ExcelFile(FILEDIR + OTT_FILE)
    site_names = xl.sheet_names
    df_list = [OTT_read(xl,site_name) for site_name in site_names]
    return site_names,df_list

FILEDIR='c:/downloads/'
OTT_FILE='OTT_Data_All_stations.xlsx'
site_names_OTT,df_list_OTT = make_OTT_df(FILEDIR,OTT_FILE)
Run Code Online (Sandbox Code Playgroud)

python import-from-excel pandas

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

可以从github分支做"conda build"吗?

我知道我可以告诉conda从github构建为:

source:
  fn:  v1.6.0.tar.gz
  url: https://github.com/SciTools/iris/archive/v1.6.0.tar.gz
  md5: 24c2d55758325a8f05aadf99748c0d2a
Run Code Online (Sandbox Code Playgroud)

要么

source:
  git_url: git@github.com:SciTools/iris.git
  git_tag: v1.6.0
Run Code Online (Sandbox Code Playgroud)

但是如何告诉conda从github分支构建?

conda

20
推荐指数
1
解决办法
2759
查看次数

OpenCV中轮廓之间的仿射变换

我有从电影中扫描的需要注册的海底图像的历史时间序列.

from pylab import *
import cv2
import urllib

urllib.urlretrieve('http://geoport.whoi.edu/images/frame014.png','frame014.png');
urllib.urlretrieve('http://geoport.whoi.edu/images/frame015.png','frame015.png');

gray1=cv2.imread('frame014.png',0)
gray2=cv2.imread('frame015.png',0)
figure(figsize=(14,6))
subplot(121);imshow(gray1,cmap=cm.gray);
subplot(122);imshow(gray2,cmap=cm.gray);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想使用每个图像左侧的黑色区域进行注册,因为该区域位于相机内部,应该及时修复.所以我只需要计算黑色区域之间的仿射变换.

我通过阈值处理并找到最大轮廓来确定这些区域:

def find_biggest_contour(gray,threshold=40):
    # threshold a grayscale image 
    ret,thresh = cv2.threshold(gray,threshold,255,1)
    # find the contours
    contours,h = cv2.findContours(thresh,mode=cv2.RETR_LIST,method=cv2.CHAIN_APPROX_NONE)
    # measure the perimeter
    perim = [cv2.arcLength(cnt,True) for cnt in contours]
    # find contour with largest perimeter
    i=perim.index(max(perim))
    return contours[i]

c1=find_biggest_contour(gray1)
c2=find_biggest_contour(gray2)

x1=c1[:,0,0];y1=c1[:,0,1]
x2=c2[:,0,0];y2=c2[:,0,1]

figure(figsize=(8,8))
imshow(gray1,cmap=cm.gray, alpha=0.5);plot(x1,y1,'b-')
imshow(gray2,cmap=cm.gray, alpha=0.5);plot(x2,y2,'g-')
axis([0,1500,1000,0]);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

蓝色是第1帧中最长的轮廓,绿色是第2帧中最长的轮廓.

确定蓝色和绿色轮廓之间的旋转和偏移的最佳方法是什么?

我只想在步骤周围的某些区域使用轮廓的右侧,例如箭头之间的区域.

当然,如果有更好的方式来注册这些图像,我很乐意听到它.我已经在原始图像上尝试了标准的特征匹配方法,但它不能很好地工作.

python opencv

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

如何确定公共 AWS S3 存储桶的区域?

我知道我可以通过执行以下操作来确定我拥有的 AWS S3 存储桶的区域:

aws s3api get-bucket-location --bucket <my-bucket>
Run Code Online (Sandbox Code Playgroud)

但是我如何确定公共访问存储桶的区域(显然我不拥有该区域)?

如果我尝试访问 AWS 开放数据存储桶之一(例如 noaa-goes16):

$ aws s3api get-bucket-location --bucket noaa-goes16
Run Code Online (Sandbox Code Playgroud)

我得到:

An error occurred (AccessDenied) when calling the GetBucketLocation operation: Access Denied
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services

17
推荐指数
2
解决办法
7520
查看次数

如何在本地Mac上最好地复制Travis CI OS X构建环境?

有没有人在本地Mac上复制Travis CI OS X构建环境

我们正在尝试构建一个跨平台的二进制python包集合,虽然我们在Travis CI上构建Linux,而Windows构建在Appveyor上,但我们已经等待访问Travis CI OS X构建环境.

因此,我们希望设置一台本地Mac来复制Travis OS X构建环境.

我们看到这里列出的编译器和软件包:http://docs.travis-ci.com/user/osx-ci-environment/#Compilers-%26-Build-toolchain但是我想知道是否有人有脚本或教程会帮助减轻事情或避免问题.

有没有人这样做并有提示?

macos travis-ci

13
推荐指数
0
解决办法
581
查看次数

Pandas datetime列为序数

我正在尝试使用日期时间列中的序数日创建一个新的Pandas数据帧列:

import pandas as pd
from datetime import datetime

print df.ix[0:5]
                              date
file                              
gom3_197801.nc 2011-02-16 00:00:00
gom3_197802.nc 2011-02-16 00:00:00
gom3_197803.nc 2011-02-15 00:00:00
gom3_197804.nc 2011-02-17 00:00:00
gom3_197805.nc 2011-11-14 00:00:00

df['date'][0].toordinal()

Out[6]:
734184

df['date'].toordinal()

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-dbfd5e8b60f0> in <module>()
----> 1 df['date'].toordinal()

AttributeError: 'Series' object has no attribute 'toordinal'
Run Code Online (Sandbox Code Playgroud)

我想这是一个基本问题,但我在最近30分钟内一直在努力阅读文档.

如何为数据框创建序数时间列?

python datetime pandas

10
推荐指数
2
解决办法
8050
查看次数

如何最好地将 NetCDF 文件集合重新分块到 Zarr 数据集

我正在尝试重新整理 NetCDF 文件集合并在 AWS S3 上创建 Zarr 数据集。我有 168 个原始 NetCDF4 经典文件,其维度数组time: 1, y: 3840, x: 4608分块为chunks={'time':1, 'y':768, 'x':922}.

我想将此输出写入 Zarr,并且我想针对时间序列提取进行优化,因此在我的块中包含更多时间记录。我想我会使用 xarray 来帮助完成工作,因为我有很多处理器可以利用 Dask,而 xarrayxr.open_mfdatasetds.to_zarr.

我第一次尝试rechunking来chunks={'time':24, 'y':768, 'x':922}匹配输入NetCDF4在分块xy,但是当我试图写Zarr它抱怨,因为它需要在两个均匀的块大小xy,只允许非均匀大小沿的最后一块time尺寸(不幸在x维度中,总大小 4608 不是块大小 922 的倍数。

然后我尝试chunks={'time':168, 'y':384, 'x':288}并开始工作,并且非常快速地进行了几分钟,然后变得越来越慢。最终在 50 分钟后,集群死亡:

4072 distributed.core - INFO - Event loop was unresponsive in Worker for 1.41s.  This is often caused by long-running …
Run Code Online (Sandbox Code Playgroud)

python python-xarray netcdf4 dask-distributed zarr

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

将NetCDF转换为GRIB2

我知道有像软件wgrib2将在文件转换gribgrib2格式的NetCDF文件,但我需要走另一条路:从NetCDFgrib2,因为这里的当地天气办公室只能消耗在栅格数据grib2格式.

似乎一个解决方案可以在Python中,使用NetCDF4-Python库(或其他)来读取NetCDF文件并使用pygrib进行编写grib2.

有没有更好的办法?

python netcdf grib

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

变量变化时面板/Hvplot 交互

我正在尝试创建一个包含两个 Holoviews 对象的仪表板:一个包含 xarray 变量列表的面板对象,以及一个在输入上采用所选变量的 hvplot对象,如下所示:pn.widgets.Select

def hvmesh(var=None):
    mesh = ds[var].hvplot.quadmesh(x='x', y='y', rasterize=True, crs=crs, 
       width=600, height=400, groupby=list(ds[var].dims[:-2]), cmap='jet')
    return mesh
Run Code Online (Sandbox Code Playgroud)

以下是特定变量(同时具有时间和高度维度)的示例网格: 在此输入图像描述

当我从面板小部件中选择变量时,我希望更新地图: 在此输入图像描述 我尝试将其作为动态地图来执行,如下所示:

from holoviews.streams import Params
import holoviews as hv

var_stream = Params(var_select, ['value'], rename={'value': 'var'})

mesh = hv.DynamicMap(hvmesh, streams=[var_stream])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试显示地图时,我得到:

Exception: Nesting a DynamicMap inside a DynamicMap is not supported.
Run Code Online (Sandbox Code Playgroud)

从面板小部件中选择 hvplot 变量似乎是一种常见的需要。使用pyviz实现此目的的最佳方法是什么?

如果它有用,这是我的完整尝试 Jupyter Notebook

python holoviews pyviz

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