Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在全息视图中使用全息图查看二维阵列切片(Python 3.5.1)_Python_Arrays_Image_Numpy_Holoviews - Fatal编程技术网

如何在全息视图中使用全息图查看二维阵列切片(Python 3.5.1)

如何在全息视图中使用全息图查看二维阵列切片(Python 3.5.1),python,arrays,image,numpy,holoviews,Python,Arrays,Image,Numpy,Holoviews,我最近发现了holoviews,而hv.Image方法是plt.Image的一个很好的替代方法。有一个非常酷的功能叫做hv.HoloMap,它允许用户输入函数并调整函数中的参数,以交互方式查看生成的二维阵列。我尝试了以下几个启动HoloMap对象和另一个dynamicMap对象的示例,但无法让它与我的数据一起工作。() 在我的真实数据集中,我将有3D数组,我想沿着一个轴(在本例中是z)切片,在那里我可以交互地查看结果切片。我用下面的numpy和xarray做了一个基本示例: 如何使用我的hv.H

我最近发现了
holoviews
,而
hv.Image
方法是
plt.Image
的一个很好的替代方法。有一个非常酷的功能叫做
hv.HoloMap
,它允许用户输入函数并调整函数中的参数,以交互方式查看生成的二维阵列。我尝试了以下几个启动
HoloMap
对象和另一个
dynamicMap
对象的示例,但无法让它与我的数据一起工作。()

在我的真实数据集中,我将有3D数组,我想沿着一个轴(在本例中是z)切片,在那里我可以交互地查看结果切片。我用下面的
numpy
xarray
做了一个基本示例:

如何使用我的
hv.HoloMap
(或
hv.dynamicMap
)对象构建我的基本函数
image\u slice
(在
z
维度上迭代)来查看我的3D数据阵列的2D切片?

import xarray as xr
import numpy as np
import holoviews as hv; hv.notebook_extension()


#Building 2D Array (X & Y)
dist = np.linspace(-0.5,0.5,202)   # Linear spatial sampling
XY,YX = np.meshgrid(dist, dist)

#Add along 3rd Dimension
Z_list = []
for i in range(10):
    Z_list.append(xr.DataArray(XY*i,dims=["x","y"]))

#Concat list of 2D Arrays into a 3D Array
DA_3D = xr.concat(Z_list,dim="z")
# DA_3D.shape 
# (10, 202, 202)

def image_slice(DA_var,k):
    return(hv.Image(DA_var[k,:,:].values))

#http://holoviews.org/Tutorials/Showcase.html Interactive Exploration w/ Circular Wave example
keys = [(DA_3D,k) for k in range(10)] #Every combination
items = [(k, image_slice(*k)) for k in keys] 
# visual_slice = hv.HoloMap(items)
# TypeError: unhashable type: 'DataArray


dmap = hv.DynamicMap(slice_image, kdims=[hv.Dimension('z_axis',range=(0, 10))])
# dmap
# TypeError: slice_image() missing 1 required positional argument: 'k'
# Which makes perfect sense because the first argument is the DataArray object but I don't know how to input that into this type of object since `hv.Dimension` requires a range

我使用
Python 3.5.1
Holoviews版本((1,4,3),

首先感谢大家的关注,我是Holoviews的作者之一。理解
HoloMap
DynamicMap
之间的区别很重要

HoloMap很像一个字典,你用(键,值)对填充它,然后你可以用小部件探索数据的可视化。DynamicMap在你构建它时不包含任何项目,而是定义一个回调函数,当小部件(或你)运行时会对它进行评估请求一个特定的键。这意味着您可以在动态维度上定义一个连续范围或离散样本列表,让您可以探索比全息图更大的空间

以您的示例为例,您可以通过以下方式构建全息图和动态地图:

将xarray作为xr导入
将numpy作为np导入
将全息视图导入为hv;
hv.笔记本_扩展()
#构建二维阵列(X&Y)
dist=np.linspace(-0.5,0.5202)#线性空间采样
XY,YX=np.网格(距离,距离)
#沿三维方向添加
Z_列表=[]
对于范围(10)内的i:
Z_list.append(xr.DataArray(XY*i,dims=[“x”,“y”]))
#将二维阵列列表合并为三维阵列
DA_3D=xr.concat(Z_列表,dim=“Z”)
#达乌3D.shape
# (10, 202, 202)
def图像_切片(k):
返回(hv.Image(dau 3D[k,:,:]值))
键=列表(范围(10))
#通过计算所有键上的函数来构建全息图
hmap=hv.HoloMap([(k,图像切片(k))用于k个关键帧],kdims=['z_轴'])
#通过定义维度上的采样来构造DynamicMap
dmap=hv.DynamicMap(图像切片,kdims=[hv.Dimension('z_轴',值=键)])

如果您还有任何问题,可以加入我们。请注意,我们正计划将xarray与HoloView正确集成,这样您就不必手动定义HoloMap/DynamicMap来探索多维数组。

谢谢您的帮助。我实际上通过
xarray
了解了有关
HoloMap
的信息,因此这将是非常棒的f两个平台之间进行了一些交流。继续努力!这是一个非常有用的工具。我想最终让我们
Holoviews
来评估来自
Scikit learn
的机器学习模型,可能有点晚了,但我们现在直接在Holoviews数据结构中支持XArray数据集。GeoViews包中有一些文档在上,HoloViews本身将有即将发布的文档。这样做的时机太疯狂了。我已经几个月没有考虑HoloViews了,最近也没有使用Xarray。昨天我有一个非常复杂的数据集要处理,所以开始尝试Xarray。我想在开车回家和di的时候用HoloViews来可视化它我不想忘记这个想法(当然我确实忘记了)。我在工作中看到的第一件事就是这条信息,它让我完全想起了我的想法。哈哈,非常感谢!你发送的链接将非常有用。