边听莫烦老师的课边敲下来的
以下代码稍有些乱,可以点击上面的链接观看视频,在简介有他的github链接,里面有代码,不过由于版本更新,视频中的代码有的会保存,可以参考我的改一下(2021.10不会报错)
import numpy as np
def class1():
array1 = np.array([[1, 2, 3],
[4, 5, 6]])
print(array1)
print("维度dimension", array1.ndim)
print("shape(几行几列)", array1.shape)
print("size(几个元素)", array1.size)
def class2():
a2 = np.array([1, 2, 3], dtype=np.int64) # int int64 float32
print(a2.dtype)
array2 = np.zeros((3, 4)) # 生成全0 数列
print(array2)
array2_1 = np.ones((2, 5), dtype=np.int16) # 生成全1 数列,其他数字可以×
print(array2_1)
array2_2 = np.arange(12).reshape((3, 4)) # 生成顺序 数列
print(array2_2)
array2_3 = np.linspace(0, 25, 6, dtype=int).reshape((2, 3)) # 生成分段数列
print(array2_3)
def class3():
# 加法减法
a3 = np.array([10, 20, 30, 40])
b3 = np.arange(4)
c3 = a3 + b3
print(a3, "\n", b3, "\n", c3)
# 平方
c3 = b3 ** 2
print("-" * 35)
print(f"b={b3},c = b**2,c={c3}")
print("-" * 35)
# sin
print("-" * 20, "三角函数", "-" * 20)
c3 = 10 * np.sin(a3)
print(c3)
print("-" * 20, "b<3", "-" * 20)
print(f"b = {b3}, b<3 = {b3 < 3}")
# 矩阵运算
print("-" * 20, "矩阵运算", "-" * 20)
a3_1 = np.array([[1, 1], [0, 1]])
b3_1 = np.arange(4).reshape((2, 2))
print(f"a={a3_1}\nb={b3_1}")
print(f"a*b=\n{a3_1 * b3_1}")
print(f"矩阵乘法np.dot(a,b)= 也可以写成a.dot(b)=\n{np.dot(a3_1, b3_1)}") # 矩阵乘法 np.dot(a,b) 也可以写成 a.dot(b)
# 随机
print("-" * 20, "随机 最大值", "-" * 20)
a3_2 = np.random.random((2, 4))
print(a3_2)
print(np.sum(a3_2, axis=1)) # axis=0纵向 1横向
print(np.min(a3_2))
print(np.max(a3_2))
def class4():
a4 = np.arange(2, 14).reshape((3, 4))
print(a4)
print("-" * 20, "索引最小、最大argmin", "-" * 20)
print(np.argmin(a4)) # 索引最小、最大
print(np.argmax(a4))
print("-" * 20, "累加cumsum", "-" * 20)
# 平均 mean average 累加前面所有项的和 cumsum() 累差(每两项的差) diff()
print(np.cumsum(a4))
print("-" * 20, "限定范围clip", "-" * 20)
# 排序 sort 转置 T或transpose 截取clip 限定范围
print(np.clip(a4, 5, 9))
def class5():
# 索引
a5 = np.arange(3, 15).reshape((3, 4))
print(a5)
print(a5[2][1])
print(a5[2, 1])
print(a5[2, :]) # 2行所有数
for row in a5: # 输出行
print(row)
for column in a5.T: # 输出列
print(column)
def class6():
a6 = np.array([1, 1, 1])
b6 = np.array([2, 2, 2])
print("-" * 20, "合并", "-" * 20)
c6 = np.vstack((a6, b6)) # 上下合并 vertical(垂直) stack(堆)
print(c6.shape)
print(c6)
d6 = np.hstack((a6, b6)) # 左右合并 horizontal stack
print(d6)
e6 = np.concatenate((a6, b6, b6), axis=0) # 可以指定axis
print(e6)
print("-" * 20, "横向变纵向a6[:, np.newaxis]", "-" * 20)
# a6.T不能把横向数列变成竖向数列
print(a6[:, np.newaxis]) # 横向变纵向
def class7():
a7 = np.arange(12).reshape((3, 4))
print(a7)
print("-" * 20, "分割", "-" * 20)
print(np.split(a7, 3, axis=0)) # axis=0对每一列切分(从上到下切),把3行4列分成3行;1-从左到右切
# 不等量分割
print("-" * 20, "不等量分割", "-" * 20)
print(np.array_split(a7, 2, axis=0))
# 还有vsplit hsplit
def class8():
print("-" * 20, "浅拷贝", "-" * 20)
a8 = np.arange(4)
b8 = a8 # 浅拷贝
print(a8)
a8[0] = 9
print(a8)
# 浅拷贝
print(b8 is a8)
# 深拷贝 deep copy
print("-" * 20, "深拷贝", "-" * 20)
c8 = a8.copy()
a8[1:3] = [8, 7]
print(a8)
print(c8)
print(c8 is a8)
def main():
class8()
if __name__ == '__main__':
main()