網站首頁 編程語言 正文
NDArray與numpy.ndarray互相轉換
import numpy as np from mxnet import nd # numpy.ndarray 變 mx.NDArray np_val = np.array([1, 2, 3]) # 定義一個numpy.ndarray nd_val = nd.array(np_val) # 深復制 # NDArray 變 numpy.ndarray np_val_ = nd_val.asnumpy()
NumPy與ndarray簡介
NumPy簡介
NumPy的全名為Numeric Python,是一個開源的Python科學計算庫,它包括:
- 一個強大的N維數組對象ndrray;
- 比較成熟的(廣播)函數庫;
- 用于整合C/C++和Fortran代碼的工具包;
- 實用的線性代數、傅里葉變換和隨機數生成函數
NumPy的優點:
- 對于同樣的數值計算任務,使用NumPy要比直接編寫Python代碼便捷得多;
- NumPy中的數組的存儲效率和輸入輸出性能均遠遠優于Python中等價的基本數據結構,且其能夠提升的性能是與數組中的元素成比例的;
- NumPy的大部分代碼都是用C語言寫的,其底層算法在設計時就有著優異的性能,這使得NumPy比純Python代碼高效得多
當然,NumPy也有其不足之處,由于NumPy使用內存映射文件以達到最優的數據讀寫性能,而內存的大小限制了其對TB級大文件的處理;此外,NumPy數組的通用性不及Python提供的list容器。因此,在科學計算之外的領域,NumPy的優勢也就不那么明顯。
數組ndarray
NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器,該對象由兩部分組成:
- 實際的數據;
- 描述這些數據的元數據;
大部分的數組操作僅僅是修改元數據部分,而不改變其底層的實際數據。數組的維數稱為秩,簡單來說就是如果你需要獲取數組中一個特定元素所需的坐標數,如a是一個2×3×4的矩陣,你索引其中的一個元素必須給定三個坐標a[x,y,z],故它的維數就是3。而軸可以理解為一種對數組空間的分割,以數組a為例,如果我們以0為軸,那么a可以看成是一個由兩個元素構成的數組,其中每個元素都是一個3×4的數組。
我們可以直接將數組看作一種新的數據類型,就像list、tuple、dict一樣,但數組中所有元素的類型必須是一致的,Python支持的數據類型有整型、浮點型以及復數型,但這些類型不足以滿足科學計算的需求,因此NumPy中添加了許多其他的數據類型,如bool、inti、int64、float32、complex64等。同時,它也有許多其特有的屬性和方法。
常用ndarray屬性:
dtype
描述數組元素的類型
shape
以tuple表示的數組形狀
ndim
數組的維度
size
數組中元素的個數
itemsize
數組中的元素在內存所占字節數
T
數組的轉置
flat
返回一個數組的迭代器,對flat賦值將導致整個數組的元素被覆蓋
real/imag
給出復數數組的實部/虛部
nbytes
數組占用的存儲空間
常用ndarray方法:
? | ? |
---|---|
reshape(…) | 返回一個給定shape的數組的副本 |
resize(…) | 返回給定shape的數組,原數組shape發生改變 |
flatten()/ravel() | 返回展平數組,原數組不改變 |
astype(dtype) | 返回指定元素類型的數組副本 |
fill() | 將數組元素全部設定為一個標量值 |
sum/Prod() | 計算所有數組元素的和/積 |
mean()/var()/std() | 返回數組元素的均值/方差/標準差 |
max()/min()/ptp()/median() | 返回數組元素的最大值/最小值/取值范圍/中位數 |
argmax()/argmin() | 返回最大值/最小值的索引 |
sort() | 對數組進行排序,axis指定排序的軸;kind指定排序算法,默認是快速排序 |
view()/copy() | view創造一個新的數組對象指向同一數據;copy是深復制 |
tolist() | 將數組完全轉為列表,注意與直接使用list(array)的區別 |
compress() | 返回滿足條件的元素構成的數組 |
原文鏈接:https://blog.csdn.net/xiaotao_1/article/details/79594802
相關推薦
- 2023-02-27 python實現定時任務的八種方式總結_python
- 2022-10-17 在?C#?中使用?Span<T>?和?Memory<T>?編寫高性能代碼的詳
- 2021-12-06 Ubuntu編譯內核模塊,內容體現系統日志中_Linux
- 2022-04-16 PyInstaller如何打包依賴文件至目標程序目錄_python
- 2022-08-20 解決WPF繪制矢量圖形模糊的問題_C#教程
- 2022-07-19 Python?assert斷言聲明,遇到錯誤則立即返回問題_python
- 2023-07-16 uniapp 小程序 filters 過濾日期
- 2022-04-27 C語言的常量,字符串,轉義字符,注釋你都了解嗎_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支