1. 程式人生 > >Numpy_01 建立 指定資料型別 檢視維度和資料型別 簡單的數學運算

Numpy_01 建立 指定資料型別 檢視維度和資料型別 簡單的數學運算

安裝numpy 通過命令提示符 pip install numpy 或者通過第三方發放版 Anaconda 進行滑鼠操作安裝

建立陣列

直接通過numpy建立

import numpy as np  # 匯入numpy包
# 生成一些隨機資料 二行三列的矩陣
data = np.random.randn(2, 3)  # 生成隨機數 二行三列的陣列
print(data)

通過將列表(list)轉換為陣列

data1 = [6, 7.5, 8, 0, 1]       # 建立一個列表
arr1 = np.array(data1)          # 將列表轉換為陣列
print(arr1)
# 列印這個陣列

巢狀列表會被轉換為多維陣列

data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]  # 建立一個巢狀列表
arr2 = np.array(data2)                # 將列表轉換為陣列 二行四列的陣列
print(arr2)                           # 列印這個陣列

建立arange陣列

print(np.arange(15))            # 生成一個一行十五列 值為 0~14 的 型別為 int 的陣列

建立特定陣列

print(np.zeros(10)
) # 建立一行十列 值全為0 型別為 float 的陣列 print(np.zeros((3, 6))) # 建立三行六列 值全為0 型別為 float 的陣列 print(np.empty((2, 3, 2))) # 返回一個 兩層 三行兩列的 值為未初始化的垃圾值 型別為float 的陣列 print(np.full((3,3), 2) # 建立了一個 3 * 3 值全為 2 的陣列

建立陣列的各種方式如下表 建立陣列的表

建立ndarray指定資料型別:

資料型別的表如下: 圖一 圖二

指定資料型別 建立ndarray

arr1 = np.array([1, 2, 3], dtype=
np.float64) # 指定資料型別為 float64位 arr2 = np.array([1, 2, 3], dtype=np.int32) # 指定資料型別為 int32位 print(arr1.dtype) # 打印出arr1的資料型別 print(arr2.dtype) # 打印出arr2的資料型別

轉換ndarray陣列的資料型別

arr = np.array([1, 2, 3, 4, 5])     # 建立一個 預設 int32 型別的陣列
print(arr.dtype)                    # 列印這個陣列的型別
float_arr = arr.astype(np.float64)  # 將這個陣列轉化為 float64 位的陣列
print(float_arr.dtype)              # 列印這個陣列的型別

轉換資料型別時的特別注意事項

arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])  # 建立了一個 float64 位的陣列
print(arr)         # 列印一下
print(arr.astype(np.int32))  # 列印 轉換這個陣列之後的值  將 float64 位轉換為 int32 位之後 小數部分會被捨棄

如果字串陣列全是數字 也可使用 astype 將其轉換為數值形式

numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)  # 建立一個 字串陣列 內容全為數值
print(numeric_strings.astype(float))  # 將這個 全是數值的 字串型別的陣列  轉換為 float 型別的陣列

dtype還有一個屬性

int_array = np.arange(10)  # 建立了一個 int 型別的陣列 
calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64)  # 建立了一個  float 型別的陣列
print(int_array.astype(calibers.dtype))  # 將 float型別的陣列型別 賦給 int 型別的陣列

檢視陣列的維度和陣列的資料型別:

print('data shape:', data.shape)  # 列印陣列的維度
print('data dtype:', data.dtype)  # 列印陣列的型別

單獨檢視維度 和 檢視維度

print(arr2.ndim)   # 只顯示是幾維
print(arr2.shape)  # 顯示幾行幾列 幾層

數學運算:

矩陣乘法:

#所有元素都乘以10
print('data * 10: \n', data * 10)

陣列乘陣列 對應位置直接相乘得結果

data = np.array([[1., 2., 3.], [4., 5., 6.]])  # 建立一個數組
print(data)  # 打印出這個陣列
print(data * data)  # 陣列對應位置相乘即結果

矩陣除法和平方:

print(1 / data)     # 每一個位置 用 1 除以 得出結果
print(data ** 0.5)  # 每個位置 的 0.5 次方得出結果

矩陣加法減法:

#每個元素與自身相加 對應位置直接相加得出結果
print('data + data : \n', data + data)
print(data - data)  # 每個位置對應相減得出結果

陣列的比較會生成布林型別的陣列:

arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
print(arr2)
print(arr2 > arr)  # 返回一個布林型別的陣列