機器學習筆記之Numpy與張量

2021-10-10 03:18:23 字數 2709 閱讀 3612

np.squeeze()

張量是矩陣向任意維度的推廣(張量的維度通常叫軸)

僅含乙個數字的張量叫標量(0d張量)

# 0d

x = np.array(12)

print(x)

print(x.ndim)

# 1d

x = np.array([12, 3, 6, 14, 7])

print(x)

print(x.ndim)

# 2d

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

[4, 5, 6, 7, 8]])

print(x)

print(x.ndim)

# 3d

x = np.array([[[1, 2, 3],

[4, 5, 6],

[7, 8, 9]],

[[1, 2, 3],

[4, 5, 6],

[7, 8, 9]],

[[1, 2, 3],

[4, 5, 6],

[7, 8, 9]]])

print(x)

print(x.ndim)

形狀是乙個整數元組

例如:

# 2d

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

[4, 5, 6, 7, 8]])

print(x)

print(x.shape)

輸出是(2, 5)

資料型別可以是float32, unit8, float64

例如b維度:(3,3),c維度(3,1)

b*c維度(3,3)運用到了廣播機制(將c複製兩列然後逐元素相乘)

例:

import numpy as np

b = np.array([[1, 1, 1],

[2, 2, 2],

[3, 3, 3]])

c = np.array([[1],

[2],

[3]])

# 逐元素相乘

生成五個隨機高斯變數

表示e的z次方

np.insert(x, 0, values=1,axis=1)

axis = 0: 表示豎直

axis = 1:表示水平

0:表示插入的索引值

value:插入的值

最終在每一行第乙個位置插入1

axis = 1 (行)

np.argmax(a, axis=1):

返回行最大值的索引

例如:

import numpy as np

1.可以用來**準確率:

可計算**值與實際值相等所佔比例

例如;

import numpy as np

y = np.array([1, 0, 0, 1, 1])

y1 = np.array([1, 0, 1, 0, 0])

acc = np.mean(y==y1)

print(acc)

可用於計算m個點分別到k個點距離

例:(1,1)(3,4)(5,12)分別到(0,0)(1,1)(2,2)距離

import numpy as np

li= np.array([[1, 1],

[3, 4],

[5, 12]])

centro = np.array([[0, 0],

[1, 1],

[2, 2]])

for i in range(len(li)):

distance = np.linalg.norm((li[i]-centro), axis=1)

print(distance)

可以將矩陣轉化為列表

例:

import numpy as np

numpy 張量拉平與恢復

numpy 中的高維陣列可以使用其自帶的flatten函式轉化成 1 維陣列。在優化問題的梯度下降求解過程中,把高維的梯度變成 1 維陣列是很重要的,方便求自適應步長。把張量拉平容易,怎麼把它復原到原來的維度呢?這自然想到把原本的張量維度儲存下來,下面介紹這個小技巧 from functools i...

機器學習之numpy入門

numpy建立陣列方式 coding utf 8import random import numpy as np array方式傳入資料 t1 np.array range 0 12 print t1 print t1.dtype print type t1 np.arange方式 t2 np.ar...

《Python之機器學習(NumPy)》

單行注釋 多行注釋 多行注釋 多行注釋 a.ndim 輸出陣列的維數 a.shape 輸出陣列的形式 幾行,幾列 copy 複製陣列 a 2 陣列中每個元素乘以2 1,2 2 陣列將變成4個 a 2 a的平方 1,2 2 unsuported operand type 陣列訪問。修建異常值。處理不存...