1.使用array()函數創建數組
參數可以為:單層或嵌套列表;嵌套元組或元組列表;元組或列表組成的列表
# 導入numpy庫
import numpy as np
# 由單層列表創建
a = np.array([1,2,3])
print(a)
[1 2 3]
# 由嵌套列表創建
b = np.array([[1.3,2.4], [0.3,4.1]])
print(b)
[[1.3 2.4]
[0.3 4.1]]
# 由嵌套元組創建
c = np.array((("p","y","t"), ("h","o","n")))
print(c)
[['p' 'y' 't']
['h' 'o' 'n']]
# 由元組列表創建
d = np.array([(3,2,1), (7,8,9)])
print(d)
[[3 2 1]
[7 8 9]]
# 由元組或列表組成的列表
e = np.array([(6,1,8), [7,5,3], (2,9,4)])
print(e)
[[6 1 8]
[7 5 3]
[2 9 4]]
# array創建數組返回的類型
print(type(a))
<class 'numpy.ndarray'>
2.數據類型
# 數組元素是同質的,即類型和大小都相同
# 數據類型由dtype對象來指定
# itemsize屬性,定義了數組中每個元素的長度占幾個字節
print(a.dtype.name, a.itemsize)
print(b.dtype.name, b.itemsize)
print(c.dtype.name, c.itemsize)
print(d.dtype.name, d.itemsize)
print(e.dtype.name, e.itemsize)
# array()函數默認根據列表或元素序列中各元素的數據類型,為ndarray對象指定最適合的數據類型。
# 也可以使用dtype選項作為array()的參數,明確指定dtype的類型。
# 如下定義一個復數數組
f = np.array([[1,2,3], [4,5,6]], dtype=complex)
print("-------------------------")
print(f)
int32 4
float64 8
str32 4
int32 4
int32 4
-------------------------
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]]
3.NumPy庫自帶的數組創建方法
# zeros()函數生成由shape參數指定維度信息,元素均為0的數組。
# 元素的數據類型為float64
g = np.zeros((3,3))
print(g)
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
# ones()函數與上述函數相似
# 元素的數據類型為float64
h = np.ones((3,3))
print(h)
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
# arange()函數,按特定規則生成包含一個數值序列的數組。
# arange(begin, end, step)
# 參數begin省略則從0開始
# 參數end應該比序列最后一個值大
# 參數step可以是浮點型
i = np.arange(0,10)
j = np.arange(10)
k = np.arange(4,10)
m = np.arange(0,10,2)
n = np.arange(0,10,1.3)
print(i)
print("-------------------------")
print(j)
print("-------------------------")
print(k)
print("-------------------------")
print(m)
print("-------------------------")
print(n)
[0 1 2 3 4 5 6 7 8 9]
-------------------------
[0 1 2 3 4 5 6 7 8 9]
-------------------------
[4 5 6 7 8 9]
-------------------------
[0 2 4 6 8]
-------------------------
[0. 1.3 2.6 3.9 5.2 6.5 7.8 9.1]
# 結合reshape()函數進行拆分
x1 = np.arange(0,12).reshape(3,4)
print(x1)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
# linspace(begin, end, cnt)函數
# 第三個參數表示需要將begin和end范圍分成幾個部分
x2 = np.linspace(0,10,6)
print(x2)
[ 0. 2. 4. 6. 8. 10.]
# random()函數以隨機數填充數組
# 每次生成元素均會有所不同
x3 = np.random.random(3)
x4 = np.random.random((3,3))
print(x3)
print("------------------------------------------")
print(x4)
[0.8223299 0.83657551 0.797519 ]
------------------------------------------
[[0.14562367 0.8657818 0.96508416]
[0.15094085 0.27332193 0.52784433]
[0.0260834 0.3047311 0.65182433]]
# eye(N)函數創建一個NxN單位矩陣(對角線為1,其余為0)
x5 = np.eye(4)
print(x5)
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
# 使用empty()函數返回全0數組的想法是不安全的
x6 = np.empty((2,3))
print(x6)
[[1. 2. 3.]
[4. 5. 6.]]