1. 程式人生 > 其它 >Python突擊(三)Numpy基礎

Python突擊(三)Numpy基礎

技術標籤:PythonPythonNumpy

目錄

1.建立陣列

2. 訪問陣列

3.陣列裁剪

4.資料型別

5.副本/檢視

6.陣列常用屬性

7.隨機


1.建立陣列

array()函式建立一個 NumPyndarray物件

import numpy as np
a = np.array([1,2,3,4,5]) #np.array([1,2,4],ndim = 3)指定陣列的維度
print(a)
print(type(a))
#[1 2 3 4 5]
#<class 'numpy.ndarray'>

一維陣列和二維陣列(通常表示矩陣和二維張量),三維矩陣(兩個二維矩陣組成)

import numpy as np
a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) 
print(a)
print("\n",b)
print("\n",c)

print(a.ndim)
print(b.ndim)
print(c.ndim)

NumPy 有一個專門用於矩陣運算的完整子模組numpy.mat

NumPy 陣列提供了ndim屬性,該屬性返回一個整數,該整數會告訴我們陣列有多少維。

2. 訪問陣列

和MATLAB中差不多。

import numpy as np
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) 
print("\n",b)
print(b.ndim)
print(b[0,1])

3.陣列裁剪

import numpy as np
arr = np.array([1,2,3,4,5,6,7])
print(arr[1:5])
#[2 3 4 5] 左開右閉

4.資料型別

預設情況下,Python 擁有以下資料型別

  • strings- 用於表示文字資料,文字用引號引起來。例如 "ABCD"。
  • integer- 用於表示整數。例如 -1, -2, -3。
  • float- 用於表示實數。例如 1.2, 42.42。
  • boolean- 用於表示 True 或 False。
  • complex- 用於表示複平面中的數字。例如 1.0 + 2.0j,1.5 + 2.5j。

NumPy 有一些額外的資料型別,並通過一個字元引用資料型別,例如i代表整數,u代表無符號整數等。

以下是 NumPy 中所有資料型別的列表以及用於表示它們的字元。

  • i- 整數
  • b- 布林
  • u- 無符號整數
  • f- 浮點
  • c- 複合浮點數
  • m- timedelta
  • M- datetime
  • O- 物件
  • S- 字串
  • U- unicode 字串
  • V- 固定的其他型別的記憶體塊 ( void )

NumPy 陣列物件有一個名為dtype的屬性,該屬性返回陣列的資料型別。

import numpy as np
a = np.array([1,2,3])
print(a.dtype)  # int32
#print(type(a))

5.副本/檢視

副本和陣列檢視之間的主要區別在於副本是一個新陣列,而這個檢視只是原始陣列的檢視。副本擁有資料,對副本所做的任何更改都不會影響原始陣列,對原始陣列所做的任何更改也不會影響副本。檢視不擁有資料,對檢視所做的任何更改都會影響原始陣列,而對原始陣列所做的任何更改都會影響檢視。

import numpy as np
a = np.array([1,2,3,4,5])
# 建立檢視
x = a.view()
# 建立副本
# x = a.copy()
a[0] = 61
print(a)
print(x)
# 檢視
#[61  2  3  4  5]
#[61  2  3  4  5]

#副本
#[61  2  3  4  5]
#[1 2 3 4 5]

副本擁有資料,而檢視不擁有資料,每個 NumPy 陣列都有一個屬性base,如果該陣列擁有資料,則這個 base 屬性返回None。否則,base屬性將引用原始物件。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

# None
# [1 2 3 4 5]

6.陣列常用屬性

  • NumPy 陣列有一個名為shape的屬性,該屬性返回一個元組,每個索引具有相應元素的數量。
  • 重塑陣列reshape屬性,返回的是檢視
  • 將多維陣列轉換為 1D 陣列reshape(-1)
import numpy as np
arr = np.array([1,2,3,4,5,6])# 一維陣列
print(arr)
arr1 = arr.reshape(2,3) # 重塑為二維陣列
print(arr1)
print(new_arr.base) # 重塑後返回的是檢視不是副本
arr2 = arr1.reshape(-1) # 重塑為一維陣列
print(arr2)

結果如下所示

  • 陣列拼接concatenate(,axis=)函式,hstack()沿行堆疊,vstack()沿列堆疊,dstack()沿高度堆疊
  • 排序
  • 拆分

7.隨機

NumPy 提供了 random 模組來處理隨機數。

  • 生成隨機數
from numpy import random
a = random.randint(100)
print(a)
  • 生成隨機陣列
from numpy import random
a = random.randint(100,size=(2,3))#生成二維陣列
print(a)