為自己Coding

YO~~ 剛跨入AI人工智慧領域的小小工程師, 熱愛自學, 熱愛分享, 下班後的我想為自己Coding, 積極撰寫教學文, 想將自學的程式知識分享給大家, 不斷追求進步的自己, 希望有一天能回饋社會,幫助需要幫助的人, 如果您有什麼很酷的想法,也覺得我還行,歡迎您找我合作~~

Python讀書會 - 公開課程讀書會筆記 - NumPy索引 - NumPy Array 數組合併

發布於

Github連結

攝影師:NEOSiAM 2021,連結:Pexels



哈囉,大家好!!由於小弟最近接到擔任舉辦讀書會的講師,而這個讀書會是根據莫凡Python公開課程所開設的,大家希望我可以帶他們看過莫凡Python的相關系列課程,所以讀書會這個系列主要是根據莫凡Python的公開系列課程講解和筆記,當然我也會額外找尋資料並補充給大家,也因為是根據公開課程的筆記,所以我都會明確記錄出處,如果有違反作者權力,麻煩告知,我會在第一時間立即刪除這系列的文章,感謝大家,當然也要特別感謝莫凡Python這麼厲害的公開課程,讓大家可以無痛初探Python的魔法世界!!

我是跟其他優秀的講師一起開設莫凡Python讀書會的,所以我不會每個章節都有筆記喔XD!!



1. NumPy 索引


課程資料來源: 7 numpy的索引 (教学教程)

一維索引

單個索引

import numpy as np
## 創建一維數組
A = np.arange(2, 18)
print(A)
## 索引第七個元素
print(A[6])

執行結果

[ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
8

二維索引

索引行

## 創建二維數組
A = np.arange(2, 18).reshape((4,4))
print(A)
## 索引第四行
print(A[3])

執行結果

[[ 2 3 4 5]
 [ 6 7 8 9]
 [10 11 12 13]
 [14 15 16 17]]
[14 15 16 17]

單個索引

第一種方法

## 索引第二行第三列
print(A[1][2])

執行結果

8

第二種方法

## 索引第二行第三列
print(A[1, 2])

執行結果

8

範圍索引

## 索引第二行的第二列到第三列
print(A[1, 1:3])

執行結果

[7 8]

逐列進行列印

## 一行一行列印出來
for row in A:
  print(row)

執行結果

[2 3 4 5]
[6 7 8 9]
[10 11 12 13]
[14 15 16 17]

逐行進行列印

## 一列一列印出來
for column in np.transpose(A):
  print(column)

執行結果

[ 2 6 10 14]
[ 3 7 11 15]
[ 4 8 12 16]
[ 5 9 13 17]

將多維矩陣進行展開變成一行的數組

import numpy as np
​
A = np.arange(2,18).reshape((4,4))
print(A)
​
print('Flatten: ', A.flatten())
print('Flatten: ', A.flat)
​
for item in A.flat:
  print(item)

執行結果

[[ 2 3 4 5]
 [ 6 7 8 9]
 [10 11 12 13]
 [14 15 16 17]]
Flatten: [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
Flatten: <numpy.flatiter object at 0x0000028C54D32730>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17



2. NumPy Array 合併


課程資料來源: 8 numpy的 array 合并 (教学教程)

垂直合併 - np.vstack()

import numpy as np
## 創建數組
A = np.array([1,2,3])
B = np.array([4,5,6])
​
## 垂直合併
C = np.vstack((A,B))
print(C)

執行結果

[[1 2 3]
 [4 5 6]]

數組形狀

## 列印出合併後的形狀
print(A.shape, B.shape, C.shape)

執行結果

(3,) (3,) (2, 3)

水平合併 - np.hstack()

## 水平合併
D = np.hstack((A,B))
print(D)
print(A.shape, D.shape)

執行結果

[1 2 3 4 5 6]
(3,) (6,)

轉置 - np.newaxis()

print(A)
print(A.shape)
​
## 水平轉置
print(A[np.newaxis, :])
print(A[np.newaxis, :].shape)
​
## 垂直轉置
print(A[:, np.newaxis])
print(A[:, np.newaxis].shape)

執行結果

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

將A、B先轉置,再進行垂直合併和水平合併

import numpy as np
## 創建數組,並轉成垂直
A = np.array([1,2,3])[:, np.newaxis]
B = np.array([4,5,6])[:, np.newaxis]
​
## 垂直合併
C = np.vstack((A,B))
## 水平合併
D = np.hstack((A,B))
​
print('A:')
print(A)
print('B:')
print(B)
print('C:')
print(C)
print('D:')
print(D)
​
print(A.shape, B.shape, C.shape, D.shape)

執行結果

A:
[[1]
 [2]
 [3]]
B:
[[4]
 [5]
 [6]]
C:
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]
D:
[[1 4]
 [2 5]
 [3 6]]
(3, 1) (3, 1) (6, 1) (3, 2)

多個矩陣合併 - np.concatenate()

## 多個數組合併
​
## 垂直合併
E = np.concatenate((A, B, A, B), axis = 0)
print(E)
​
## 水平合併
F = np.concatenate((A, B, A, B), axis = 1)
print(F)

執行結果

[[1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]]
[[1 4 1 4]
 [2 5 2 5]
 [3 6 3 6]]

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CC BY-NC-ND 2.0 版權聲明
1

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區