本篇要介紹使用 python 搭配 numpy 模組存放陣列資料,讓你在處理大型陣列資料時能夠快速地處理!而且最厲害的是還可以支援陣列運算唷!
當 Python 處理龐大資料時,其原生 list 效能表現並不理想,
我自己覺得使用 numpy 好處是可以整個陣列作運算,例如:1
2
3
4
5np1 = np.array([1, 2, 3])
print(np1 - 1) # [0 1 2]
print(np1 + 2) # [3 4 5]
print(np1 * 3) # [3 6 9]
print(np1 / 4) # [0.25 0.5 0.75]
以下介紹如何建立 numpy 陣列:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
np1 = np.array([1, 2, 3])
print(np1) # [1 2 3]
np2 = np.array([[2,3,4],[3,4,5]])
print(np2)
"""
[[2 3 4]
[3 4 5]]
"""
print(np1 + np2)
"""
[[3 5 7]
[4 6 8]]
"""
print(np2.shape[0]) # 2
print(np2.shape[1]) # 3
# 全為0
np3 = np.zeros([2, 3])
print(np3)
"""
[[0. 0. 0.]
[0. 0. 0.]]
"""
# 全為1
np4 = np.ones([2, 3])
print(np4)
"""
[[1. 1. 1.]
[1. 1. 1.]]
"""
# 接近0
np5 = np.empty((3,4))
print(np5)
"""
[[1.54136387e-316 6.90035230e-310 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000]]
"""
np6 = np.array([1,2,3,4,5,6])
np7 = np6.reshape(2,3)
print(np6) # [1 2 3 4 5 6]
print(np7)
"""
[[1 2 3]
[4 5 6]]
"""
# 共用同一組數據,修改一個數據的元素,另一個數據也會改變
np6[2] = 10
print(np7)
"""
[[ 1 2 10]
[ 4 5 6]]
"""
# 取出第二row, 取出的數據是共用同一組數據,修改一個數據的元素,另一個數據也會改變
np8 = np7[1, :]
print(np8) # [4 5 6]
# 取出第二column, 取出的數據是共用同一組數據,修改一個數據的元素,另一個數據也會改變
np9 = np7[:, 1]
print(np9) # [2 5]
參考
https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/2-2-np-array/
https://blog.techbridge.cc/2017/07/28/data-science-101-numpy-tutorial/
範例. numpy.append 添加元素
numpy.append 語法為numpy.append(arr, values, axis)
numpy.append 會添加values值到arr陣列尾部,會回傳一個新配置的陣列,輸入陣列的維度必須相符合。
以下為範例,
a 為 2x3 的矩陣 (numpy.ndarray),
b 為 1x3 的矩陣 (numpy.ndarray),全部為0
b 為 3x1 的矩陣 (numpy.ndarray),全部為11
2
3
4
5
61, 2, 3], [4, 5, 6]]) a = np.array([[
1, 3)) b = np.ones((
2, 1)) c = np.zeros((
a
array([[1, 2, 3],
[4, 5, 6]])
a 添加一行 1x3 [[7, 8, 9]] 矩陣,並指定axis=01
2
3
47, 8, 9]], axis=0) np.append(a, [[
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
a 添加一列 2x1 [[1], [2]] 矩陣,並指定axis=11
2
31], [2]], axis=1) np.append(a, [[
array([[1, 2, 3, 1],
[4, 5, 6, 2]])
a 添加一行 1x3 [[7, 8, 9]] 矩陣,不指定axis1
27, 8, 9]]) np.append(a, [[
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a 添加 b 在最後一行1
2
3
40) np.append(a, b, axis=
array([[1., 2., 3.],
[4., 5., 6.],
[1., 1., 1.]])
a 添加 c 在最後一列1
2
31) np.append(a, c, axis=
array([[1., 2., 3., 0.],
[4., 5., 6., 0.]])
參考
NumPy數組操作 - NumPy教程
https://www.1ju.org/numpy/numpy-array-manipulation
範例. 字串陣列 numpy.str 轉整數陣列 numpy.int32
1 | '123', '234']) a = np.array([ |
範例. 矩陣取一行,矩陣取一欄
取出矩陣的某一列1
2
31, 2, 3], [4, 5, 6]]) a = np.array([[
1] a[
array([4, 5, 6])
取出矩陣的某一欄1
2
3
41, 2, 3], [4, 5, 6]]) a = np.array([[
1] b = a[:,
b
array([2, 5])
參考
Python numpy 提取矩阵的某一行或某一列_Python_luoganttcc的博客-CSDN博客
https://blog.csdn.net/luoganttcc/article/details/74080768
範例. .ndim 看資料 ndarray 有多少維度
1 | 1, 2, 3], [4, 5, 6]]) a = np.array([[ |
參考
[Day14]Numpy的ndarray! - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
https://ithelp.ithome.com.tw/articles/10195434