欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python NumPy創(chuàng)建數(shù)組方法

 更新時間:2022年09月06日 10:50:39   作者:飛Link  
這篇文章主要介紹了Python NumPy創(chuàng)建數(shù)組方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

1. 蠻力構造法

np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
import numpy as np

# 如果不指定數(shù)據(jù)類型,就會根據(jù)object參數(shù)自動選擇合適的數(shù)據(jù)類型
a = np.array([[1, 2, 3], [4, 5, 6]])
# 也可以在創(chuàng)建數(shù)組時,指定元素的數(shù)據(jù)類型
b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint8)

2. 特殊數(shù)值法

這里的特殊數(shù)值指的是0、1、空值。特殊數(shù)值法適合構造全0、全1、空數(shù)組,或由0、1組成的類似單位矩陣(主對角線為1,其余為0)的數(shù)組。

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')

固定參數(shù)shape表示生成的數(shù)組結構,默認參數(shù)dtype用于指定數(shù)據(jù)類型(默認浮點型)。order參數(shù)指定的是數(shù)組在內(nèi)存中的存儲順序,'C'表示C語言使用的行為優(yōu)先方式,'F'表示Fortran語言使用的列優(yōu)先方式

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的無符號整型數(shù)組

  • 方案1:全1數(shù)組乘以255
  • 方案2:全0數(shù)組加255
  • 方案3:使用填充函數(shù)fill()
import numpy as np

a = np.empty((3, 4), dtype=np.uint8)
a.fill(255)
print(a)

3. 隨機數(shù)值法

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()函數(shù)用于生成[0,1)區(qū)間內(nèi)的隨機浮點型整數(shù),randint()函數(shù)用于生成[low,high)區(qū)間內(nèi)的隨機整形數(shù)組。參數(shù)size是一個元組,用于指定生成數(shù)組的結構

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()函數(shù)用于生成以loc為均值、以scale為標準差的正態(tài)分布數(shù)組。

import numpy as np
# 導入繪圖模塊
import matplotlib.pyplot as plt

# 生成正態(tài)分布數(shù)據(jù)
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()函數(shù)和Python的range()函數(shù)用法相同,并且還可以接收浮點型參數(shù)

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()函數(shù)需要3個參數(shù):一個起點、一個終點、一個返回元素的個數(shù)。linspace()函數(shù)返回的元素包括起點和終點,可以通過endpoint參數(shù)選擇是否包含終點

import numpy as np

# 返回0到5之間的5個等距數(shù)值,包括0和5
print(np.linspace(0, 5, 5))
# 返回5個等距數(shù)值,包括0但不包括5
print(np.linspace(0, 5, 5, endpoint=False))

5. 重復構造法

repeat()函數(shù)用來重復數(shù)組元素。但如果被重復的數(shù)組是一個多維數(shù)組,且repeat()函數(shù)指定了axis參數(shù),情況就會變得有些復雜

import numpy as np

a = np.arange(5)
print(a)
# 重復一維數(shù)組元素3次
print(np.repeat(a, 3))
a = np.arange(6).reshape((2, 3))
print(a)
# 重復二維數(shù)組元素3次,不指定軸
print(np.repeat(a, 3))
# 重復二維數(shù)組元素3次,指定0軸
print(np.repeat(a, 3, axis=0))
# 重復二維數(shù)組元素3次,指定1軸
print(np.repeat(a, 3, axis=1))

tile()將整個數(shù)組而非數(shù)組元素水平和垂直重復指定的次數(shù)

import numpy as np

a = np.arange(5)
print(a)
# 重復一維數(shù)組3次
print(np.tile(a, 3))
# 重復一維數(shù)組3行2列
print(np.tile(a, (3, 2)))
a = np.arange(6).reshape((2, 3))
print(a)
# 重復二維數(shù)組3次
print(np.tile(a, 3))
# 重復二維數(shù)組2行3列
print(np.tile(a, (2, 3)))

6. 網(wǎng)格構造法

用數(shù)組表示經(jīng)緯度網(wǎng)格方式一:用兩個一維數(shù)組表示。使用定長分隔函數(shù)linspace(),將經(jīng)度從-180°180°分為間隔為10°的37個點,將緯度從90°-90分為間隔為10°的19個點,得到兩個一維數(shù)組

import numpy as np

# 精度為10°,共計37個經(jīng)度點
lon = np.linspace(-180, 180, 37)
# 精度為10°,共計19個緯度點
lat = np.linspace(90, -90, 19)

用數(shù)組表示經(jīng)緯度網(wǎng)格方式二:用兩個二維數(shù)組分別表示經(jīng)度網(wǎng)格和緯度網(wǎng)格。經(jīng)度網(wǎng)格中每一列的元素都是相同的(同一個經(jīng)度),緯度網(wǎng)格中每一行的元素都是相同的(同一個緯度)。生成二維經(jīng)緯度網(wǎng)格的常用函數(shù)是np.meshgrid(),該函數(shù)以一維經(jīng)度數(shù)組lon和一維緯度數(shù)組lat為參數(shù),返回二維的經(jīng)度數(shù)組和緯度數(shù)組

import numpy as np

# 精度為10°,共計37個經(jīng)度點
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])

構造經(jīng)緯度網(wǎng)格,除了使用np.meshgrid()函數(shù)外,還有一個更強大的方法,這個方法可以直接生成緯度網(wǎng)格和經(jīng)度網(wǎng)格而無需借助于一維數(shù)組(請注意,緯度在前,經(jīng)度在后)

import numpy as np

# 使用實數(shù)指定網(wǎng)格經(jīng)度為5°
lats, lons = np.mgrid[90:-91:-5, -180:181:5]
print(lons.shape, lats.shape)
# 也可以用虛數(shù)指定分隔點數(shù)
lats, lons = np.mgrid[90:-90:37j, -180:180:73j]
print(lons.shape, lats.shape)

7. 自定義數(shù)據(jù)類型

結果顯示:數(shù)組會將所有元素的數(shù)據(jù)類型都轉為'<U32'類型。這里的U標識Unicode字符串;<表示字節(jié)順序,意為小端在前(低位字節(jié)存儲在最小地址中);32表示數(shù)組元素占用32字節(jié),數(shù)組元素占用的字節(jié)數(shù)由所有元素中最長的那個元素決定

import numpy as np

print(np.array(['Anne', 1.70, 55]).dtype)

怎樣在數(shù)組中保留用以生成數(shù)組的列表中的元素類型呢?這就需要用到自定義數(shù)據(jù)類型了。自定義數(shù)據(jù)類型類似于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))

相關文章

最新評論