和大(小)师(白)一起学Python(七) NumPy基础
本文参考《深度学习教科书》石川聪彦 著,陈欢 译 7.2.2 一维数组生成
import numpy as np
storages = [24, 3, 4, 23, 10, 12]
print(storages)
# 请生成 ndarray 数组,并将其代入变量 np_storages 中
np_storages = np.array(storages)
# 请对变量 np_storages 的类型进行输出
print(type(np_storages))
7.2.4 索引引用与切片
arr = np.arange(10)
arr[0:3] = 1
print(arr)
7.2.6 数组的复制
import numpy as np
# 观察在 Python 的列表中使用切片时程序的行为
arr_List = [x for x in range(10)]
print("列表类型的数据")
print("arr_List:",arr_List)
print()
arr_List_copy = arr_List[:]
arr_List_copy[0] = 100
print("因为列表的切片是对数据进行复制而成的,所以在 arr_List 中不会反映出 arr_List_copy 中的变化")
print("arr_List:",arr_List)
print()
# 观察在 NumPy 的 ndarray 中使用切片时程序的行为
arr_NumPy = np.arange(10)
print("NumPy的ndarray数据")
print("arr_NumPy:",arr_NumPy)
print()
arr_NumPy_view = arr_NumPy[:]
arr_NumPy_view[0] = 100
print("NumPy 的切片会将 view ( 保存数据的地址信息 ) 代入,对 arr_NumPy_view 的变更将在 arr_NumPy 中被反映出来")
print("arr_NumPy:",arr_NumPy)
print()
# 观察在 NumPy 的 ndarray 中使用copy() 时程序的行为
arr_NumPy = np.arange(10)
print('在 NumPy 的 ndarray 中使用 copy() 的变化')
print("arr_NumPy:",arr_NumPy)
print()
arr_NumPy_copy = arr_NumPy[:].copy()
arr_NumPy_copy[0] = 100
print("使用 copy() 会生成备份,arr_NumPy_copy 不会对 arr_NumPy 造成影响")
print("arr_NumPy:",arr_NumPy)
7.2.7 布尔索引的引用
arr = np.array([2, 4, 6, 7])
print(arr[np.array([True, True, True, False])])
7.2.8 通用函数 绝对值、自然对数、平方根
import numpy as np
arr = np.array([4, -9, 16, -4, 20])
print(arr)
# 请将变量 arr 中的各个元素转换成绝对值并代入变量 arr_abs 中
arr_abs = np.abs(arr)
print(arr_abs)
# 请对变量 arr_abs 的各个元素的 e 的幂和平方根进行输出
print(np.exp(arr_abs))
print(np.sqrt(arr_abs))
7.2.9 集合函数
import numpy as np
arr1 = [2, 5, 7, 9, 5, 2]
arr2 = [2, 5, 8, 3, 1]
# 请使用 np.unique() 函数,将变量 arr1 中重复的元素去除之后的数组代入变量 new_arr1 中
new_arr1 = np.unique(arr1)
print(new_arr1)
# 请对变量 new_arr1 和变量 arr2 的并集进行输出
print(np.union1d(new_arr1, arr2))
# 请对变量 new_arr1 和变量 arr2 的交集进行输出
print(np.intersect1d(new_arr1, arr2))
# 请对从变量 new_arr1 中减去变量 arr2 的差集进行输出
print(np.setdiff1d(new_arr1, arr2))
7.2.10 随机数
import numpy as np
# 请在不需要添加 np.random 的方式下导入 randint() 函数
from numpy.random import randint
# 请将各元素大于 0 小于 10 的整数的矩阵 (5 × 2) 代入变量 arr1 中
arr1 = randint(0, 11, (5, 2))
print(arr1)
# 请将 3 个 0~1 均匀分布的随机数代入变量 arr2 中
arr2 = np.random.rand(3)
print(arr2)
7.3.1 二维数据维度与整形函数
import numpy as np
# 请将二维数组代入变量 arr 中
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr)
# 请对变量 arr 的矩阵中的各个维度的元素数量进行输出
print(arr.shape)
# 请将变量 arr 转换成 4 行 2 列的矩阵
print(arr.reshape(4, 2))
7.3.2 二位数组索引
arr = np.array([[1, 2 ,3], [4, 5, 6]])
print(arr[1])
arr = np.array([[1, 2 ,3], [4, 5, 6]])
print(arr[1,2])
arr = np.array([[1, 2 ,3], [4, 5, 6]])
print(arr[1,1:])
7.3.3 求和函数
arr = np.array([[1, 2 ,3], [4, 5, 6]])
print(arr.sum())
print(arr.sum(axis=0))
print(arr.sum(axis=1))
7.3.4 任意行索引
arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
# 按照第 3 行、第 2 行、第 0 行的顺序将行数据取出,并生成新的元素
# 索引编号从 0 开始
print(arr[[3, 2, 0]])
7.3.5 转置矩阵
import numpy as np
arr = np.arange(10).reshape(2, 5)
# 请将变量 arr 进行转置
print(arr.T) # print(np.transpose(arr))
7.3.6 排序
import numpy as np
arr = np.array([[8, 4, 2], [3, 5, 1]])
# 请使用 argsort() 方法对变量arr进行排序并对结果进行输出
print(arr.argsort())
# 请使用 np.sort() 函数对变量arr进行排序并对结果进行输出
print(np.sort(arr))
# 请使用 sort() 方法将变量arr按行进行排序
arr.sort(1)
print(arr)
7.3.8 统计函数
import numpy as np
arr = np.arange(15).reshape(3, 5)
# 请对变量 arr 中每一列的平均值进行输出
print(arr.mean(axis=0))
# 请对变量 arr 中行的合计值进行输出
print(arr.sum(axis=1))
# 请对变量 arr 的最小值进行输出
print(arr.min())
# 请对变量 arr 每一列中最大值的索引编号进行输出
print(arr.argmax(axis=0))
|