04 数据操作 + 数据预处理【动手学深度学习v2】
生活随笔
收集整理的這篇文章主要介紹了
04 数据操作 + 数据预处理【动手学深度学习v2】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據操作
寬是列的個數
4維是n個3維數組放一起 比如每次讀128張圖片
5維 視頻 有時間維度
[1:3,1:] 1:3——拿1,2行,左閉右開 1:——拿1到所有列
[::3,::2] ::所有行/列
::3——所有行,每三行一跳,就取第0,3行,::2——所有列,每兩列一跳,就取第0,2列
數據操作
import torchx=torch.arange(12) xx.shape#張量形狀 向量維度為1長度為12x.numel()#元素個數- 可以通過張量的shape屬性來訪問張量的形狀 (沿每個軸的長度)。
- 如果只想知道張量中元素的總數,即形狀的所有元素乘積,可以檢查它的大小(size)。
`x.numel()
- 要改變一個張量的形狀而不改變元素數量和元素值,可以調用reshape函數。
可以把張量x從形狀為(12,)的行向量轉換為形狀為(3,4)的矩陣
- 使用全0、全1、其他常量或者從特定分布中隨機采樣的數字來初始化矩陣
- 通過從某個特定的概率分布中隨機采樣來得到張量中每個元素的值
其中的每個元素都從均值為0、標準差為1的標準高斯(正態)分布中隨機采樣。
例如,當我們構造數組來作為神經網絡中的參數時,我們通常會隨機初始化參數的
- 提供包含數值的Python列表(或嵌套列表)來為所需張量中的每個元素賦予確定值。在這里,最外層的列表對應于軸0,內層的列表對應于軸1。
- 加減乘除運算
- 指數運算
- 張量連結(concatenate)
- 把它們端對端地疊起來形成一個更大的張量。我們只需要提供張量列表,并給出沿哪個軸連結。下面的例子分別演示了當我們沿行(軸-0,形狀的第一個元素)和按列(軸-1,形狀的第二個元素)連結兩個矩陣時會發生什么情況。我們可以看到,第一個輸出張量的軸-0長度( 6 )是兩個輸入張量軸-0長度的總和( 3+3 );第二個輸出張量的軸-1長度( 8 )是兩個輸入張量軸-1長度的總和( 4+4 )。
廣播機制
X=torch.arange(6).reshape(((3,1,2))) print(X) Y=torch.arange(12).reshape(((3,4,1))) print(Y) print(X+Y)tensor([[[0, 1]],[[2, 3]],[[4, 5]]]) tensor([[[ 0],[ 1],[ 2],[ 3]],[[ 4],[ 5],[ 6],[ 7]],[[ 8],[ 9],[10],[11]]]) tensor([[[ 0, 1],[ 1, 2],[ 2, 3],[ 3, 4]],[[ 6, 7],[ 7, 8],[ 8, 9],[ 9, 10]],[[12, 13],[13, 14],[14, 15],[15, 16]]])數據預處理
https://www.cnblogs.com/an-ning0920/p/10037790.html
刪除缺失值最多的列
import osos.makedirs(os.path.join('..', 'data'), exist_ok=True) data_file = os.path.join('..', 'data', 'house_tiny.csv') with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA,Pave,127500\n') # 每行表示一個數據樣本f.write('2,NA,106000\n')f.write('4,NA,178100\n')f.write('NA,Pave,140000\n')f.write('5,NA,140000\n')f.write('6,10,140000\n')# 刪除缺失值最多的列 print(data.isnull().sum())MAX = -1 for i in data:#i分別是NumRooms Alley Price等字符串count = data[i].isnull().sum()if count > MAX:MAX = countstr = iprint(MAX, str) data = data.drop([str], axis=1) print(data)
數據處理實例
import os import pandas as pd import torchos.makedirs(os.path.join('..', 'data'), exist_ok=True) data_file = os.path.join('..', 'data', 'house_tiny.csv') with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA,Pave,127500\n') # 每行表示一個數據樣本f.write('2,NA,106000\n')f.write('4,NA,178100\n')f.write('NA,Pave,140000\n')f.write('5,NA,140000\n')f.write('6,Pave,140000\n')data = pd.read_csv(data_file) print(data) '''NumRooms Alley Price 0 NaN Pave 127500 1 2.0 NaN 106000 2 4.0 NaN 178100 3 NaN Pave 140000 4 5.0 NaN 140000 5 6.0 Pave 140000 '''# 處理缺失數據 分別取出前兩列做輸入 最后一列做輸出 inputs, outputs = data.iloc[:, 0:2],data.iloc[:, 2] print(inputs) print(outputs) # 對于數值域中的NumRooms 用均值補齊NaN inputs = inputs.fillna(inputs.mean()) print(inputs) '''NumRooms Alley 0 4.25 Pave 1 2.00 NaN 2 4.00 NaN 3 4.25 Pave 4 5.00 NaN 5 6.00 Pave '''# 為非數值類的類別值分類 inputs = pd.get_dummies(inputs, dummy_na=True)# NaN看做一個類別 print(inputs) ''' NumRooms Alley_Pave Alley_nan 0 4.25 1 0 1 2.00 0 1 2 4.00 0 1 3 4.25 1 0 4 5.00 0 1 5 6.00 1 0 '''x, y = torch.tensor(inputs.values), torch.tensor(outputs.values) print(x) print(y) ''' tensor([[4.2500, 1.0000, 0.0000],[2.0000, 0.0000, 1.0000],[4.0000, 0.0000, 1.0000],[4.2500, 1.0000, 0.0000],[5.0000, 0.0000, 1.0000],[6.0000, 1.0000, 0.0000]], dtype=torch.float64) tensor([127500, 106000, 178100, 140000, 140000, 140000])'''總結
以上是生活随笔為你收集整理的04 数据操作 + 数据预处理【动手学深度学习v2】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: df的缺失值处理 df.isnull()
- 下一篇: python寻找列表最大值最小值及其下标