Numpy互操作-iObjects Python with JupyterHub for K8s

Numpy是Python科学计算的常用库,也在机器学习领域具有重要的作用。Numpy主要实现矩阵运算功能,这里的教程将地理空间数据集与Numpy实现相互转换,从而可以将Python的更多通用库用于地理空间分析,包括矢量和栅格数据的转换。进一步,可以利用Pandas和GeoPandas的相关功能。

  • 镜像构建-iObjects Python with JupyterHub for K8s
  • Pandas快速入门
  • GeoPandas官方中文文档--译著
from iobjectspy import (datasetvector_to_numpy_array,numpy_array_to_datasetvector,datasetraster_to_numpy_array,numpy_array_to_datasetraster)
import numpy as np
import os
# 设置示例数据路径
#example_data_dir = ''
example_data_dir = '/home/jovyan/data/smdata/'# 设置结果输出路径
out_dir = os.path.join(example_data_dir, 'out')
if not os.path.exists(out_dir):os.makedirs(out_dir)def vector_to_numpy_test():"""读取矢量数据集 Town_P 到 numpy 数组中"""narray1 = datasetvector_to_numpy_array(os.path.join(example_data_dir, 'example_data.udb/Landuse_R'), export_spatial=True)print(narray1.dtype)print(narray1[:10])narray = datasetvector_to_numpy_array(os.path.join(example_data_dir, 'example_data.udb/Town_P'), export_spatial=True)if narray is None:print('读取矢量数据集到 numpy 数组失败')else:print('ndarray.ndim : ' + str(narray.ndim))print('ndarray.dtype : ' + str(narray.dtype))print(narray[:10])print(narray['SmX'][:10])print('读取矢量数据集到 numpy 数组成功')xy_array = np.c_[narray['SmX'], narray['SmY']][:10]print(xy_array.ndim)print(xy_array.dtype)print(xy_array)try:# 使用 hdbscan 做层次聚类,并将结果在 matplotlib 显示% matplotlib inlinefrom hdbscan import HDBSCANimport matplotlib.pyplot as pltxy_c = np.c_[narray['SmX'], narray['SmY']]hdb = HDBSCAN(min_cluster_size=10).fit(xy_c)hdb_labels = hdb.labels_n_clusters_hdb_ = len(set(hdb_labels)) - (1 if -1 in hdb_labels else 0)hdb_unique_labels = set(hdb_labels)hdb_colors = plt.cm.Spectral(np.linspace(0, 1, len(hdb_unique_labels)))fig = plt.figure(figsize=plt.figaspect(1))hdb_axis = fig.add_subplot('111')for k, col in zip(hdb_unique_labels, hdb_colors):if k == -1:col = 'k'hdb_axis.plot(xy_c[hdb_labels == k, 0], xy_c[hdb_labels == k, 1], 'o', markerfacecolor=col,markeredgecolor='k', markersize=6)hdb_axis.set_title('HDBSCAN\nEstimated number of clusters: %d' % n_clusters_hdb_)plt.show()except ImportError:passdef numpy_to_vector_test():"""写入数据到矢量数据集中"""narray = np.empty(10, dtype=[('ID', 'int32'), ('X', 'float64'), ('Y', 'float64'), ('NAME', 'U10')])narray[0] = 1, 116.380351, 39.93393099, '什刹海'narray[1] = 2, 116.365305, 39.89622499, '广安门内'narray[2] = 3, 116.427342, 39.89467499, '崇文门外'narray[3] = 4, 116.490881, 39.96567299, '酒仙桥'narray[4] = 5, 116.447486, 39.93767799, '三里屯'narray[5] = 6, 116.347435, 40.08078599, '回龙观'narray[6] = 7, 116.407196, 39.83895899, '大红门'narray[7] = 8, 116.396915, 39.88371499, '天桥'narray[8] = 9, 116.334522, 40.03594199, '清河'narray[9] = 10, 116.03008, 39.87852799, '潭柘寺'print(narray)result = numpy_array_to_datasetvector(narray, os.path.join(out_dir, 'out_numpy_array.udb'), x_col='X', y_col='Y')if result is not None:if isinstance(result, str):if isinstance(result, str):print('从 numpy 数组中写入数据到矢量数据集 %s 成功' % result)else:print('从 numpy 数组中写入数据到矢量数据集 %s 成功' % result.name)else:print('从 numpy 数组中写入数据到矢量数据集失败')def raster_to_numpy_test():"""从栅格数据 DEM 中读取数据到 numpy 数组中"""narray = datasetraster_to_numpy_array(os.path.join(example_data_dir, 'example_data.udb/DEM'))if narray is None:print('读取栅格数据集到 numpy 数组失败')else:print('ndarray.ndim : ' + str(narray.ndim))print('ndarray.dtype : ' + str(narray.dtype))print(narray)print('读取栅格数据集到 numpy 数组成功')numpy_array_to_datasetraster(narray, 0.001, 0.001, os.path.join(out_dir, 'out_numpy_array.udb'), as_grid=False)def numpy_to_raster_test():"""从 numpy 的数组二进制文件中加载数据,写道栅格数据集中"""narray = np.load(os.path.join(example_data_dir, 'dem.npy'))print(narray)result = numpy_array_to_datasetraster(narray, 0.001, 0.001, os.path.join(example_data_dir, 'out_numpy_array.udb'),as_grid=True)if result is not None:if isinstance(result, str):print('从 numpy 数组中写入数据到栅格数据集 %s 成功' % result)else:print('从 numpy 数组中写入数据到栅格数据集 %s 成功' % result.name)else:print('从 numpy 数组中写入数据到栅格数据集失败')
if __name__ == '__main__':# 读取矢量数据集到 numpy 数组成功vector_to_numpy_test()# 从 numpy 数组中写入数据到矢量数据集中成功numpy_to_vector_test()# 读取栅格数据集到 numpy 数组成功raster_to_numpy_test()# 从 numpy 数组中写入数据到栅格数据集中成功numpy_to_raster_test()
[('LANDTYPE', '<U4'), ('Area', '<f4'), ('Area_1', '<i2'), ('SmX', '<f8'), ('SmY', '<f8'), ('SmPerimeter', '<f8'), ('SmArea', '<f8')]
[('用材林', 132., 132, 116.47779337, 40.87251703, 0.75917921, 1.40894401e-02)('用材林',  97.,  97, 116.6540059 , 40.94696274, 0.4945153 , 1.03534475e-02)('灌丛',  36.,  36, 116.58451795, 40.98712283, 0.25655489, 3.89923745e-03)('灌丛',  36.,  36, 116.89611418, 40.76792703, 0.59237713, 3.81791878e-03)('用材林',   1.,   1, 116.37943683, 40.91435429, 0.03874328, 7.08450886e-05)('灌丛', 126., 126, 116.49117083, 40.78302383, 0.53664074, 1.34577856e-02)('用材林',  83.,  83, 116.69943237, 40.74456848, 0.39696365, 8.83225363e-03)('用材林', 128., 128, 116.8129727 , 40.69116153, 0.56949408, 1.35877743e-02)('用材林',  29.,  29, 116.24543769, 40.71076092, 0.30082509, 3.07221559e-03)('灌丛', 467., 467, 116.43290772, 40.50875567, 1.91745792, 4.95537433e-02)]
ndarray.ndim : 1
ndarray.dtype : [('NAME', '<U9'), ('SmX', '<f8'), ('SmY', '<f8')]
[('百尺竿乡', 115.917748, 39.53525099) ('什刹海', 116.380351, 39.93393099)('月坛', 116.344828, 39.91476099) ('广安门内', 116.365305, 39.89622499)('牛街', 116.36388 , 39.88680299) ('崇文门外', 116.427342, 39.89467499)('永定门外', 116.402249, 39.86559299) ('崔各庄', 116.515447, 39.99966499)('小关', 116.411727, 39.97737199) ('潘家园', 116.467911, 39.87179299)]
[115.917748 116.380351 116.344828 116.365305 116.36388  116.427342116.402249 116.515447 116.411727 116.467911]
读取矢量数据集到 numpy 数组成功
2
float64
[[115.917748    39.53525099][116.380351    39.93393099][116.344828    39.91476099][116.365305    39.89622499][116.36388     39.88680299][116.427342    39.89467499][116.402249    39.86559299][116.515447    39.99966499][116.411727    39.97737199][116.467911    39.87179299]]
[( 1, 116.380351, 39.93393099, '什刹海')( 2, 116.365305, 39.89622499, '广安门内')( 3, 116.427342, 39.89467499, '崇文门外')( 4, 116.490881, 39.96567299, '酒仙桥') ( 5, 116.447486, 39.93767799, '三里屯')( 6, 116.347435, 40.08078599, '回龙观') ( 7, 116.407196, 39.83895899, '大红门')( 8, 116.396915, 39.88371499, '天桥') ( 9, 116.334522, 40.03594199, '清河')(10, 116.03008 , 39.87852799, '潭柘寺')]
从 numpy 数组中写入数据到矢量数据集 NewDataset 成功
DEM
ndarray.ndim : 2
ndarray.dtype : int16
[[ 360  357  353 ... 1373 1320 1265][ 349  353  355 ... 1354 1292 1259][ 353  358  356 ... 1375 1341 1319]...[ 741  756  745 ...  819  836  860][ 700  713  718 ...  821  848  872][ 684  696  696 ...  828  854  880]]
读取栅格数据集到 numpy 数组成功
[[ 360  357  353 ... 1373 1320 1265][ 349  353  355 ... 1354 1292 1259][ 353  358  356 ... 1375 1341 1319]...[ 741  756  745 ...  819  836  860][ 700  713  718 ...  821  848  872][ 684  696  696 ...  828  854  880]]
从 numpy 数组中写入数据到栅格数据集 NewDataset 成功

转载于:https://my.oschina.net/u/2306127/blog/3084786

04_Numpy互操作-iObjects Python with JupyterHub for K8s相关推荐

  1. 项目内部iframe嵌套jupyterhub for k8s

    介绍: Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果.--Jupyter Notebook官方介绍 jupyterhu ...

  2. Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka

    一.概述 线上有一套k8s集群,部署了很多应用.现在需要对一些基础服务做一些常规检测,比如: 系统时间,要求:k8s的每一个节点的时间,差值上下不超过2秒 k8s版本,要求:k8s的每一个节点的版本必 ...

  3. JupyterHub on K8S私有化部署

    环境准备:k8s环境>=1.18 一.使用镜像suggest123/k8s-hub:0.0.11 此镜像使用jwt验证登录 之后可以教大家如何自定义一个jupyterhub镜像. 二.存储选择 ...

  4. python tqdm_推荐一些实用的的 Python 库

    halo,大家好,我是黑里怕,今天给大家分享一些Python库,希望可以给大家带来一些用处! 原作者:崔庆才 原出处:技术博客:静觅 原文链接:推荐一些实用的的 Python 库 一门语言好用.方便的 ...

  5. 推荐一些能提高生产力的 Python 库

    " 阅读本文大概需要 3 分钟. " 一门语言好用.方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特性之外,还在一定程度上取决于 ...

  6. 推荐一些能能提高生产力的 Python 库

    " 阅读本文大概需要 3 分钟. " 一门语言好用.方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特性之外,还在一定程度上取决于 ...

  7. 推荐一些实用的的 Python 库

    一门语言好用.方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特性之外,还在一定程度上取决于其有太多太多库的支持,不论是官方维护的还是第三方开发的.就 ...

  8. python打造个性化ai_人工智能GIS技术篇——打造GeoAI个性化应用,你需要人工智能GIS流程工具...

    在2019 GIS 软件技术大会上,超图提出了人工智能GIS技术体系,丰富和创新了GIS基础支撑技术.人工智能GIS技术体系的核心内容之一是GeoAI,即融合AI的空间分析与处理.在GeoAI功能的应 ...

  9. k8s环境问题及解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 一.k8s基本命令 kubectl get rc kubectl delete rc mysql kubectl get po ...

最新文章

  1. 【目标检测】(8) ASPP改进加强特征提取模块,附Tensorflow完整代码
  2. 深入分析:12C ASM Normal冗余中PDB文件块号与AU关系与恢复
  3. 音乐产业碰撞人工智能,这次擦出了怎样的新火花?
  4. 生活永远这样,在自己放松自己的时候,会让你摔个跟头,忍耐生老练,老练生盼望...
  5. 必看2021年80后夫妻同时过信息系统项目管理师
  6. 【UI】android如何绘制一个饼图
  7. 某一个接口403 其他接口可以调通_设计模式HR:不会设计模式,你来面什么试?你以为设计模式只有23种?(真正的入门到精通可以用到入土)...
  8. java 百度爬虫_零基础写Java知乎爬虫之先拿百度首页练练手
  9. unit 12 文档练习
  10. 物联网的几大开源操作系统
  11. Uipath文档教程
  12. 基于聚类算法的城市餐饮数据分析与店铺选址
  13. 目标2025:通信产业在能源变局中拥抱智能未来
  14. vue不具名插槽与具名插槽
  15. adb概览及协议参考
  16. Work_Day02(2019-10-24)_CFCA电子签章
  17. 震撼,愿所有中国人,都能听到这篇演讲!
  18. 在VB编程中,如何实现加入声音
  19. 不断压抑情绪会我们失去什么?
  20. php中in的作用是什么,in是什么软件

热门文章

  1. 趣图:男生、女生、git log 三者讲故事的差别
  2. 如何在ArcGIS中调用星图地球数据云的数据?
  3. 计算机只会加法,那么它如何用加法来计算减法呢?
  4. 里氏替换原则(爱恨纠葛的父子关系)
  5. scrapy框架start_urls以及sart_requests分析
  6. python进阶练习之——求未知数❤️
  7. 数据库设计及建模工具——ERwin简介
  8. 【代码质量】C/C++静态检测/静态分析|TscanCode|cppcheck
  9. 管理数据质量、准确性和一致性的策略
  10. 手势控制:点击、滑动、平移、捏合、旋转、长按、轻扫