1. 程式人生 > 實用技巧 >機器學習第一天----瞭解Numpy基礎包

機器學習第一天----瞭解Numpy基礎包

什麼是Numpy基礎包?

NumPy是Python中演算法擴充套件包,它是一個Python庫,提供多維陣列物件,各種派生物件(如掩碼陣列和矩陣),

以及用於陣列快速操作的各種例程,包括數學,邏輯,形狀操作,排序,選擇,I / O離散傅立葉變換,基本線性代數,基本統計運算,隨機模擬等等。

NumPy 最重要的一個特點是其 N 維陣列物件 ndarray,它是一系列同類型資料的集合,以 0 下標為開始進行集合中元素的索引。ndarray 物件是用於存放同類型元素的多維陣列。

ndarray 中的每個元素在記憶體中都有相同儲存大小的區域。接下來我只敘述目前我使用到的方法,後續遇到仍會補充,其具體詳情可查閱:

https://www.runoob.com/numpy/numpy-dtype.html

1.建立ndarray陣列

# coding:utf-8
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5.])
print(a)

其結果為

[0. 1. 2. 3. 4. 5.]

2.切片與索引

a.ndarray陣列可通過內建slice(start,end,step)來擷取陣列中的元素,但不包括介素元素

# coding:utf-8
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5])
print
(a) s=slice(0,4,2) print(a[s])

其結果為:

[0 1 2 3 4 5]
[0 2]

b.可以通過冒號分隔切片引數start:stop:step來進行切片操作

# coding:utf-8
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5])
print(a)
s=slice(0,4,2)
print(a[s])
b=a[0:4:2]
print(a[b])

其結果為:

[0 1 2 3 4 5]
[0 2]
[0 2]

對陣列的操作

1.reshape(arr, newshape, order='C'),在不改變資料的情況下改變陣列形狀。

  • arr要修改成陣列的形狀
  • newshape是整數,要與要修改的形狀相適應
  • order:'C' -- 按行,'F' -- 按列,'A' -- 原順序,'k' -- 元素在記憶體中的出現順序。
# coding:utf-8
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5])
print("原始陣列:",a)
b=a.reshape(3,2)
print("改變後的陣列:\n",b)

其結果為:

原始陣列: [0 1 2 3 4 5]
改變後的陣列:
 [[0 1]
 [2 3]
 [4 5]]

2.ndarray.flat 是一個數組元素迭代器

# coding:utf-8
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5])
print("原始陣列:",a)
b=a.reshape(3,2)
print("改變後的陣列:\n",b)
print("迭代輸出:")
for i in b.flat:
    print(i)

其結果為:

原始陣列: [0 1 2 3 4 5]
改變後的陣列:
 [[0 1]
 [2 3]
 [4 5]]
迭代輸出:
0
1
2
3
4
5