如題,由於在機器學習中,必定會遇到資料,例如:
x_train = array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]], dtype=float32)
那個透過 numpy,可以得到 x_train.shape = (50000, 784) ,究竟 numpy, x_train 是什麼呢? 如何知道資料類型? 有哪些屬性? 有哪些方法?
x_train 數據和其形狀 (50000, 784),這說明它是一個 NumPy 數組,通常用於深度學習和機器學習中的數據集表示。以下是對 x_train 的分析:
● x_train 是什麼?
- 類型:x_train 是一個 NumPy 數組(numpy.ndarray)。
- 數據形狀:它的形狀為 (50000, 784),這意味著這個數組有 50000 行和 784 列。在機器學習中,每一行(row)通常代表一個樣本,每一列(column)代表一個特徵。
● 其中的數據代表什麼?
- 根據形狀,這個數組可能用於表示圖像數據集,其中每行(row)代表一個扁平化的圖像。例如,在手寫數字識別問題(如 MNIST 數據集)中,每個 28x28 像素的圖像被扁平化為一個長度為 784 的一維數組。
- 數據類型為 float32,這是深度學習中常用的數據類型,用於減少內存消耗並提高計算效率。
● NumPy 數組的主要屬性:
- ndarray.shape:數組的各維度大小。
- ndarray.size:數組中元素的總數。
- ndarray.dtype:數組元素的數據類型。
- ndarray.ndim:數組的維數。
● NumPy 數組的常用方法:
- reshape:改變數組的形狀。
- flatten 或 ravel:將多維數組降為一維。
- transpose:轉置數組。
- sum、mean、std 等:計算統計量。
- max、min:尋找最大值和最小值。
import numpy as np
# 假設 x_train 是一個 numpy 數組
x_train = np.array(x_train) # 使用您提供的數據
# 獲取數組的形狀
shape = x_train.shape # 結果將是 (50000, 784)
# 扁平化第一個圖像
flattened_image = x_train[0].flatten()
# 計算所有樣本的平均值
mean_val = x_train.mean()
● NumPy 中1~5維度的資料:
import numpy as np
# 創建一個一維數組
array_1d = np.array([1, 2, 3, 4, 5])
# 查看形狀
print(array_1d.shape) # 輸出: (5,)
# 創建一個二維數組(矩陣)
array_2d = np.array([[1, 2], [3, 4], [5, 6]])
# 查看形狀
print(array_2d.shape) # 輸出: (3, 2)
# 創建一個三維數組
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 查看形狀
print(array_3d.shape) # 輸出: (2, 2, 2)
# 創建一個四維數組
array_4d = np.array([[[[1], [2]], [[3], [4]]], [[[5], [6]], [[7], [8]]]])
# 查看形狀
print(array_4d.shape) # 輸出: (2, 2, 2, 1)
# 創建一個五維數組
array_5d = np.array([[[[[1], [2]], [[3], [4]]], [[[5], [6]], [[7], [8]]]],
[[[[9], [10]], [[11], [12]]], [[[13], [14]], [[15], [16]]]]])
# 查看形狀
print(array_5d.shape) # 輸出: (2, 2, 2, 2, 1)
# 在這些示例中,每增加一個維度,數組的結構就變得更加複雜。shape 屬性清晰地顯示了每個維度上的元素數量,這對於理解數據結構和進行數據操作非常重要。