網站首頁 編程語言 正文
1. 蠻力構造法
np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
import numpy as np # 如果不指定數據類型,就會根據object參數自動選擇合適的數據類型 a = np.array([[1, 2, 3], [4, 5, 6]]) # 也可以在創建數組時,指定元素的數據類型 b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint8)
2. 特殊數值法
這里的特殊數值指的是0、1、空值。特殊數值法適合構造全0、全1、空數組,或由0、1組成的類似單位矩陣(主對角線為1,其余為0)的數組。
np.zeros(shape, dtype=float, order='C') np.ones(shape, dtype=float, order='C') np.empty(shape, dtype=float, order='C') np.eye(N, M=None, k=0, dtype=float, order='C')
固定參數shape表示生成的數組結構,默認參數dtype用于指定數據類型(默認浮點型)。order參數指定的是數組在內存中的存儲順序,'C'
表示C語言使用的行為優先方式,'F'
表示Fortran語言使用的列優先方式
import numpy as np print(np.zeros(6)) print(np.zeros((2, 3))) print(np.ones((2, 3), dtype=int)) print(np.empty((2, 3))) print(np.eye(3, dtype=np.uint8))
如果需要一個3行4列,初始值都是255的無符號整型數組
- 方案1:全1數組乘以255
- 方案2:全0數組加255
- 方案3:使用填充函數
fill()
import numpy as np a = np.empty((3, 4), dtype=np.uint8) a.fill(255) print(a)
3. 隨機數值法
np.random.random(size=None) np.random.randint(low, high=None, size=None) np.random.normal(loc=0.0, scale=1.0, size=None)
random()
函數用于生成[0,1)
區間內的隨機浮點型整數,randint()
函數用于生成[low,high)
區間內的隨機整形數組。參數size是一個元組,用于指定生成數組的結構
import numpy as np print(np.random.random(3)) print(np.random.random((2, 3))) print(np.random.randint(5)) print(np.random.randint(1, 5, size=(2, 3)))
normal()
函數用于生成以loc為均值、以scale為標準差的正態分布數組。
import numpy as np # 導入繪圖模塊 import matplotlib.pyplot as plt # 生成正態分布數據 tall = np.random.normal(170, 4, 1000) # 從156厘米到190厘米,每2厘米一個分段 bins = np.arange(156, 190, 2) # 繪制柱狀圖 plt.hist(tall, bins) # 顯示圖形 plt.show()
4. 定長分割法
import numpy as np np.arange(start, stop, step, dtype=None) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
arange()
函數和Python的range()
函數用法相同,并且還可以接收浮點型參數
import numpy as np print(np.arange(5)) print(np.arange(5, 11)) print(np.arange(5, 11, 2)) print(np.arange(5.5, 11, 1.5)) print(np.arange(3, 15).reshape(3, 4))
linspace()
函數需要3個參數:一個起點、一個終點、一個返回元素的個數。linspace()
函數返回的元素包括起點和終點,可以通過endpoint
參數選擇是否包含終點
import numpy as np # 返回0到5之間的5個等距數值,包括0和5 print(np.linspace(0, 5, 5)) # 返回5個等距數值,包括0但不包括5 print(np.linspace(0, 5, 5, endpoint=False))
5. 重復構造法
repeat()
函數用來重復數組元素。但如果被重復的數組是一個多維數組,且repeat()
函數指定了axis
參數,情況就會變得有些復雜
import numpy as np a = np.arange(5) print(a) # 重復一維數組元素3次 print(np.repeat(a, 3)) a = np.arange(6).reshape((2, 3)) print(a) # 重復二維數組元素3次,不指定軸 print(np.repeat(a, 3)) # 重復二維數組元素3次,指定0軸 print(np.repeat(a, 3, axis=0)) # 重復二維數組元素3次,指定1軸 print(np.repeat(a, 3, axis=1))
tile()
將整個數組而非數組元素水平和垂直重復指定的次數
import numpy as np a = np.arange(5) print(a) # 重復一維數組3次 print(np.tile(a, 3)) # 重復一維數組3行2列 print(np.tile(a, (3, 2))) a = np.arange(6).reshape((2, 3)) print(a) # 重復二維數組3次 print(np.tile(a, 3)) # 重復二維數組2行3列 print(np.tile(a, (2, 3)))
6. 網格構造法
用數組表示經緯度網格方式一:用兩個一維數組表示。使用定長分隔函數linspace()
,將經度從-180°
到180°
分為間隔為10°
的37個點,將緯度從90°
到-90
分為間隔為10°
的19個點,得到兩個一維數組
import numpy as np # 精度為10°,共計37個經度點 lon = np.linspace(-180, 180, 37) # 精度為10°,共計19個緯度點 lat = np.linspace(90, -90, 19)
用數組表示經緯度網格方式二:用兩個二維數組分別表示經度網格和緯度網格。經度網格中每一列的元素都是相同的(同一個經度),緯度網格中每一行的元素都是相同的(同一個緯度)。生成二維經緯度網格的常用函數是np.meshgrid()
,該函數以一維經度數組lon和一維緯度數組lat為參數,返回二維的經度數組和緯度數組
import numpy as np # 精度為10°,共計37個經度點 lon = np.linspace(-180, 180, 37) # 精度為10°,共計19個緯度點 lat = np.linspace(90, -90, 19) lons, lats = np.meshgrid(lon, lat) print(lons.shape) print(lats.shape) print(lons[:,0]) print(lons[0])
構造經緯度網格,除了使用np.meshgrid()
函數外,還有一個更強大的方法,這個方法可以直接生成緯度網格和經度網格而無需借助于一維數組(請注意,緯度在前,經度在后)
import numpy as np # 使用實數指定網格經度為5° lats, lons = np.mgrid[90:-91:-5, -180:181:5] print(lons.shape, lats.shape) # 也可以用虛數指定分隔點數 lats, lons = np.mgrid[90:-90:37j, -180:180:73j] print(lons.shape, lats.shape)
7. 自定義數據類型
結果顯示:數組會將所有元素的數據類型都轉為'<U32'
類型。這里的U標識Unicode字符串;<
表示字節順序,意為小端在前(低位字節存儲在最小地址中);32表示數組元素占用32字節,數組元素占用的字節數由所有元素中最長的那個元素決定
import numpy as np print(np.array(['Anne', 1.70, 55]).dtype)
怎樣在數組中保留用以生成數組的列表中的元素類型呢?這就需要用到自定義數據類型了。自定義數據類型類似于C語言的結構體,
import numpy as np mytype = np.dtype([('name', 'S32'), ('tall', np.float), ('bw', np.int)]) print(np.array([('Anne', 1.70, 55)], dtype=mytype))
原文鏈接:https://blog.csdn.net/feizuiku0116/article/details/126705818
相關推薦
- 2022-06-26 django中模板繼承與ModelForm實例詳解_python
- 2022-08-05 Entity?Framework映射TPH、TPT、TPC與繼承類_C#教程
- 2022-11-18 Redux模塊化拆分reducer函數流程介紹_React
- 2022-12-19 Tensorflow加載與預處理數據詳解實現方法_python
- 2022-07-21 html標簽和style的使用及Emmet插件
- 2022-11-18 flutter?showModalBottomSheet常用屬性及說明_Android
- 2023-04-08 淺析C語言中對于char*和char[]的理解_C 語言
- 2022-09-16 Pandas數值排序?sort_values()的使用_python
- 最近更新
-
- 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同步修改后的遠程分支