写在前面
我们在昨天的学习笔记讨论了 Python 基本变数类型与资料结构可以应用的属性或方法,除了基本的资料结构以外,你是否还记得 Python 可以透过引入 numpy 套件之后使用 ndarray 资料结构呢?当时我们为了解决 Python 的 list 资料结构无法进行 element-wise 的运算,因此使用了 numpy 套件的 ndarray,我们势必要了解她常见的属性或方法。
numpy 与 ndarray 的常用属性或方法
了解 ndarray 的概观
ndim 属性
shape 属性
dtype 属性
import numpy as np
ironmen = [56, 8, 19, 14, 6, 71]
ironmen_array = np.array(ironmen)
print(ironmen_array.ndim) # number of dimensions
print(ironmen_array.shape) # m*n
print(ironmen_array.dtype) # 資料類型
print("\n") # 空一行
# 2d array
ironmen_2d = [range(1, 7), [56, 8, 19, 14, 6, 71]]
ironmen_2d_array = np.array(ironmen_2d)
print(ironmen_2d_array.ndim) # number of dimensions
print(ironmen_2d_array.shape) # m*n
print(ironmen_2d_array.dtype) # 資料類型
建立 ndarray
numpy 套件除了 array() 方法可以将 list 转换成 ndarray,还有其他的方法可以建立 ndarray。
zeros() 方法
empty() 方法
arange() 方法
import numpy as np
print(np.zeros(6)) # 六個元素均為零的 1d array
print("------") # 分隔線
print(np.zeros((2, 6))) # 十二個元素均為零的 2d array
print("------") # 分隔線
print(np.empty((2, 6, 2))) # 二十四個元素均為未初始化的值
print("------") # 分隔線
print(np.arange(11)) # 十一個元素為 0 到 10 的 1d array
转换变数类型
ndarray 的 astype() 方法可以转换变数类型。
import numpy as np
ironmen = ["56", "8", "19", "14", "6", "71"]
ironmen_str_array = np.array(ironmen)
print(ironmen_str_array.dtype)
print("---") # 分隔線
# 轉換為 int64
ironmen_int_array = ironmen_str_array.astype(np.int64)
print(ironmen_int_array.dtype)
用索引值进行筛选
利用 [] 搭配索引值筛选 ndarray
import numpy as np
my_array = np.arange(10)
print(my_array[0])
print(my_array[0:5])
print("---") # 分隔線
my_2d_array = np.array([np.arange(0, 5), np.arange(5, 10)])
print(my_2d_array)
print("---") # 分隔線
print(my_2d_array[1, :]) # 第二列
print(my_2d_array[:, 1]) # 第二欄
print(my_2d_array[1, 1]) # 第二列第二欄的元素
用布尔值进行筛选
利用布林值(bool)筛选 ndarray
import numpy as np
ironmen = [56, 8, 19, 14, 6, 71]
groups = ["Modern Web", "DevOps", "Cloud", "Big Data", "Security", "自我挑戰組"]
ironmen_array = np.array(ironmen)
groups_array = np.array(groups)
# 用人數去篩選組別
print(ironmen_array >= 10) # 布林值陣列
print(groups_array[ironmen_array >= 10]) # 大於 10 的組別
# 用組別去篩選人數
print(groups_array != "自我挑戰組") # 布林值陣列
print(ironmen_array[groups_array != "自我挑戰組"]) # 除了自我挑戰組以外的人數
2d array 转置
使用 T 属性。
import numpy as np
建立一個 2d array
my_1d_array = np.arange(10)
my_2d_array = my_1d_array.reshape((2, 5))
print(my_2d_array)
print("---") # 分隔線
print(my_2d_array.T)
numpy 的 where 方法
透过 numpy 的 where() 方法在 ndarray 中进行流程控制。
import numpy as np
ironmen_array = np.array([56, 8, 19, 14, 6, np.nan])
np.where(np.isnan(ironmen_array), 71, ironmen_array)
排序
透过sort()方法。
import numpy as np
ironmen_array = np.array([56, 8, 19, 14, 6, 71])
print(ironmen_array)
ironmen_array.sort()
print(ironmen_array)
随机变数
透过 numpy 的 random() 方法可以生成随机变数。
import numpy as np
print(normal_samples)
print("---") # 分隔線
print(uniform_samples)
小結
今天我们讨论了 numpy 套件与 ndarray 的属性或方法,包含建立,变数类型转换,筛选与排序等,这些属性与方法有的隶属于 numpy 套件,有的隶属于 ndarray 这个资料结构所建立的对象,对于熟悉面向对象的概念是很好的练习机会。
本文来自企鹅号 - 灯火学院媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 灯火学院媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。