0
点赞
收藏
分享

微信扫一扫

NumPy基础知识-新手笔记

龙毓七七 2023-07-13 阅读 75

读取数据

import numpy as np
np.random.seed(2019)

# 生成10个随机数:[0.0, 1.0)
nd1 = np.random.random([10])  # 列表
print(nd1)
nd2 = np.random.random((10))  # 元组
print(nd2)
nd3 = np.random.random(10)
print(nd3)
print("*"*50)

运行结果:

NumPy基础知识-新手笔记_数据

import numpy as np
np.random.seed(2019)

# 生成4×4的二维矩阵:[0.0, 1.0)
nd4 = np.random.random((4, 4))
print(nd4)
print("*"*50)
nd5 = np.random.random([4, 4])
print(nd5)

运行结果:

NumPy基础知识-新手笔记_d3_02

import numpy as np
np.random.seed(2019)

nd1 = np.random.random([10])  # 列表
print(nd1)
# 获取指定位置的数据,获取第4个元素
print(nd1[3])  # 下标从0开始
# 截取一段数据
print(nd1[3: 6])  # 下标为3 4 5,start=3, end=6,step=1
# 截取固定间隔数据
print(nd1[1:6:2])  # 下标为1 3 5,start=1,end=6,step=2
# 倒序取数
print(nd1)
print(nd1[::-2])
# 下标从左到右依次为:-10 -9 -8 -7 -6 -5 …… -2 -1,取下表为:-1 -3 -5 -7 -9

运行结果:

NumPy基础知识-新手笔记_数据_03

import numpy as np
np.random.seed(2019)

print(np.arange(25))
nd2 = np.arange(25).reshape([5, 5])  # 列表
print(nd2)
nd3 = np.arange(25).reshape((5, 5))  # 元组
print(nd3)

运行结果:

NumPy基础知识-新手笔记_d3_04

import numpy as np
np.random.seed(2019)

nd2 = np.arange(25).reshape([5, 5])  # 列表
print(nd2)
# 截取一个多维数组的某个区域的数据
print(nd2[1:3, 1:3])  # 行列好的起始:0  行号:1 2  列号:1 2  区间:左闭右开
# 截取一个多维数组中数值在某个值域之内的数据
print(nd2[(nd2>3) & (nd2<10)])
# 截取多维数组中指定的行
print(nd2[[1, 2]])  # 读取第1、2行
print(nd2[1:3, :])  # 读取第1、2行
# 截取多维数组中指定的列
print(nd2[:, 1:3])  # 读取第2、3列

运行结果:

NumPy基础知识-新手笔记_数据_05

import numpy as np
from numpy import random as nr

a = np.arange(1, 25, dtype=float)  # 左闭右开,步长为1,浮点数
print(a)
print("*"*50)
# 输出3×4的二维矩阵,可重复抽取  size:指定输出数组形状
c1 = nr.choice(a, size=(3, 4))
print("随机可重复抽取:")
print(c1)
print("*"*50)
# 输出3×4的二维矩阵,replace修改为False,不可重复抽取
c2 = nr.choice(a, size=(3, 4), replace=False)
print("随机但不重复抽取:")
print(c2)
print("*"*50)
# 下式中参数p指定每个元素对应的抽取概率,默认为每个元素被抽取的概率相同
c3 = nr.choice(a, size=(3, 4), p=a / np.sum(a))
print("随机但按制度概率抽取:")
print(c3)
print("*"*50)
print("np.sum(a)={}".format(np.sum(a)))  # np.sum(a) 将a中的数据进行求和

NumPy基础知识-新手笔记_数据_06

NumPy的算术运算

逐元素操作

又称为逐元乘法(Element-Wise Product)或哈达玛积(Hadamard Product)。运算符:* 或 np.multiply()。

逐元素操作(又称对应元素相乘)是两个矩阵中对应元素位置对应)相乘,输出的大小与相乘数组或矩阵的大小一致

import numpy as np

A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])
print("*"*10+"两数组元素相乘"+"*"*10)
print(A*B)              # 两数组对应位置的数据元素相乘
print(np.multiply(A, B))
print("*"*10+"数组元素与标量(单一数值)相乘"+"*"*10)
print(A*2.0)
print(A/2.0)

运行结果:

NumPy基础知识-新手笔记_d3_07

数组通过一些激活函数处理后,输出与输入形状一致

X = np.random.rand(2, 3)
print(X)
print(X.shape)

def sigmoid(x):
    return 1/(1+np.exp(-x))
# print(np.exp(1))  # np.exp(1) = e^1 = e = 2.718281828459045
def relu(x):
    return np.maximum(0, x)
# print(np.maximum(0, 5))  # 返回最大值
# print(np.maximum(0, -2))  # 返回最大值
def softmax(x):
    return np.exp(x)/np.sum(np.exp(x))
print("输入参数X的形状为:", X.shape)
print("激活函数sigmoid输出形状:", sigmoid(X).shape)
print("激活函数relu输出形状:", relu(X).shape)
print("激活函数softmax输出形状:", softmax(X).shape)

运行结果:

NumPy基础知识-新手笔记_数组_08

点积运算

点积(Dot Product)运算又称为内积运算,运算符:np.dot()

第一个矩阵的第2个维度与第二个矩阵的第1个维度的数据元素个数必须一致。

import numpy as np

X1 = np.array([[1, 2], [3, 4]])
X2 = np.array([[5, 6, 7], [8, 9, 10]])
X3 = np.dot(X1, X2)  # 点积(常规操作):第一个矩阵的第一行与第二个矩阵的第一列相乘并相加
print(X3)

运算结果:

NumPy基础知识-新手笔记_数据_09


















           



举报

相关推荐

0 条评论