<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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)
這裡的特殊數值指的是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的無符號整型陣列
fill()
import numpy as np a = np.empty((3, 4), dtype=np.uint8) a.fill(255) print(a)
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()
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))
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)))
用陣列表示經緯度網格方式一:用兩個一維陣列表示。使用定長分隔函數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)
結果顯示:陣列會將所有元素的資料型別都轉為'<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))
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45