numpy中增加與減少資料維度

2022-07-08 01:36:10 字數 2036 閱讀 5646

在使用神經網路訓練時,往往要求我們輸入的資料是二維的,但有時我們得到的單條資料是一維的,這時候就需要我們將一維的資料擴充套件到二維。

numpy.expand_dims(a, axis)

舉例:

>>> import numpy as np

>>> a = np.array([1,2,3])

>>> a

array([1, 2, 3])

>>> a.shape

(3,)

>>> np.expand_dims(a, axis=0)

array([[1, 2, 3]])

>>> np.expand_dims(a, axis=0).shape

(1, 3)

>>> np.expand_dims(a, axis=1).shape

(3, 1)

>>> b = np.array([[1,2,3],[2,3,4]])

>>> b.shape

(2, 3)

>>> np.expand_dims(b, axis=0).shape

(1, 2, 3)

>>> np.expand_dims(b, axis=1).shape

(2, 1, 3)

>>> np.expand_dims(b, axis=2).shape

(2, 3, 1)

>>> np.expand_dims(b, axis=-1).shape

(2, 3, 1)

>>> np.expand_dims(b, axis=-2).shape

(2, 1, 3)

>>> np.expand_dims(b, axis=-3).shape

(1, 2, 3)

使用numpy.reshape(a, newshape)

>>> a

array([1, 2, 3])

>>> a.shape

(3,)

>>> np.reshape(a, (1,3)).shape

(1, 3)

>>> np.reshape(a, (3,1)).shape

(3, 1)

>>> b

array([[1, 2, 3],

[2, 3, 4]])

>>> b.shape

(2, 3)

>>> np.reshape(b, (1,2,3)).shape

(1, 2, 3)

>>> np.reshape(b, (2,1,3)).shape

(2, 1, 3)

>>> np.reshape(b, (2,3,1)).shape

(2, 3, 1)

有時候我們又想把高維度資料轉換成地維度

numpy.squeeze(axis=none)

ndarrayshape中,去掉維度為1的。預設去掉所有的1。

注意:只能去掉shape中的1,其他數字的維度無法去除。

舉例:

>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

>>> a = a.reshape(1, 1, 1, 2, 5)

>>> a.shape

(1, 1, 1, 2, 5)

>>> a.squeeze().shape # 預設去掉shape中的所有的1

(2, 5)

>>> a.squeeze(0).shape # 去掉第1個1

(1, 1, 2, 5)

>>> a.squeeze(-3).shape # 去掉倒數第3個1

(1, 1, 2, 5)

同上,使用numpy.reshape(a, newshape)

盡可能減少 資料處理中的記憶體消耗

盡可能減少 資料處理中的記憶體消耗 伺服器成本 時間成本 def filerows f,debug false l global pass ip with open f,r as fr for i in fr try d json.loads i i i.strip n except excepti...

python中numpy與matlab的對應關係

通用函式等價表 matlab numpy說明 help func info func or help func orfunc?在ipython環境下 檢視關於func的幫助文件 type func source func orfunc?在ipython環境下 當func不是內建函式時,查詢它的 a ...

numpy中的array與matrix的區別

numpy.mat和numpy.matrix的區別 型別特點 ndarray 可以為多維 1d,2d,3d nd matrices 必須為2維 matrix是array的乙個小的分支,包含於array。所以matrix擁有array的所有特性。雖說matrix僅僅是array的乙個小分支,但是他也是...