NumPy 數(shù)組形狀修改

數(shù)組的形狀是每個(gè)維中元素的數(shù)量。

獲取數(shù)組的形狀

打印 2-D 數(shù)組的形狀:

import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)

運(yùn)行結(jié)果

(2, 4)

上面的實(shí)例返回 (2, 4),這意味著該數(shù)組有 2 個(gè)維,每個(gè)維有 4 個(gè)元素。

利用 ndmin 使用值 1,2,3,4 的向量創(chuàng)建有 5 個(gè)維度的數(shù)組,并驗(yàn)證最后一個(gè)維度的值為 4:

import numpy as np
arr = np.array([1, 2, 3, 4], ndmin=5)
print(arr)
print('shape of array :', arr.shape)

運(yùn)行結(jié)果

[[[[[1 2 3 4]]]]]
shape of array : (1, 1, 1, 1, 4)
元組的形狀代表什么?

每個(gè)索引處的整數(shù)表明相應(yīng)維度擁有的元素?cái)?shù)量。
上例中的索引 4,我們的值為 4,因此可以說(shuō)第 5 個(gè) ( 4 + 1 th) 維度有 4 個(gè)元素。

修改數(shù)組形狀

數(shù)組的形狀是每個(gè)維中元素的數(shù)量。通過(guò)修改數(shù)組形狀,我們可以添加或刪除維度或更改每個(gè)維度中的元素?cái)?shù)量。

從 1-D 重塑為 2-D

將以下具有 12 個(gè)元素的 1-D 數(shù)組轉(zhuǎn)換為 2-D 數(shù)組。
最外面的維度將有 4 個(gè)數(shù)組,每個(gè)數(shù)組包含 3 個(gè)元素:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)

運(yùn)行結(jié)果

[[ 1 2 3]
 [ 4 5 6]
 [ 7 8 9]
 [10 11 12]]

從 1-D 重塑為 3-D

將以下具有 12 個(gè)元素的 1-D 數(shù)組轉(zhuǎn)換為 3-D 數(shù)組。
最外面的維度將具有 2 個(gè)數(shù)組,其中包含 3 個(gè)數(shù)組,每個(gè)數(shù)組包含 2 個(gè)元素:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)

運(yùn)行結(jié)果

[[[ 1 2]
  [ 3 4]
  [ 5 6]]
 [[ 7 8]
  [ 9 10]
  [11 12]]]
數(shù)組可以修改成任何形狀嗎?

是的,只要重塑所需的元素在兩種形狀中均相等。
我們可以將 8 元素 1D 數(shù)組重塑為 2 行 2D 數(shù)組中的 4 個(gè)元素,但是我們不能將其重塑為 3 元素 3 行 2D 數(shù)組,因?yàn)檫@將需要 3x3 = 9 個(gè)元素。

嘗試將具有 8 個(gè)元素的 1D 數(shù)組轉(zhuǎn)換為每個(gè)維度中具有 3 個(gè)元素的 2D 數(shù)組(將產(chǎn)生錯(cuò)誤):

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)

運(yùn)行結(jié)果

Traceback (most recent call last):
  File "test.py", line 5, in

未知的維

您可以使用一個(gè)“未知”維度。
這意味著您不必在 reshape 方法中為維度之一指定確切的數(shù)字。
傳遞 -1 作為值,NumPy 將為您計(jì)算該數(shù)字。

將 8 個(gè)元素的 1D 數(shù)組轉(zhuǎn)換為 2x2 元素的 3D 數(shù)組:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)

運(yùn)行結(jié)果

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]
注意:我們不能將 -1 傳遞給一個(gè)以上的維度。

展平數(shù)組

展平數(shù)組(Flattening the arrays)是指將多維數(shù)組轉(zhuǎn)換為 1D 數(shù)組。
我們可以使用 reshape(-1) 來(lái)做到這一點(diǎn)。
把數(shù)組轉(zhuǎn)換為 1D 數(shù)組:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

運(yùn)行結(jié)果

[1 2 3 4 5 6]

有很多功能可以更改 numpy flatten、ravel 中數(shù)組形狀,還可以重新排列元素 rot90、flip、fliplr、flipud 等。這些功能屬于 numpy 的中級(jí)至高級(jí)部分。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清