python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量

python numpy常用操作

Numpy基本操作

# 导入numpy
import numpy as np
# 生成numpy数组
x = np.array([1.0, 2.0, 3.0])
print(x)  # [1. 2. 3.]
print(type(x))  # <class 'numpy.ndarray'>
# Numpy的算术运算
x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 4.0, 6.0])
print(x+y) #[3. 6. 9.]
print(x-y) #[-1. -2. -3.]
print(x*y) # [ 2.  8. 18.]
print(x/y) #[0.5 0.5 0.5]
# Numpy的多维数组
A = np.array([[1, 2], [3, 4]])
print(A)
#[[1 2]
# [3 4]]
# 矩阵A的形状可以通过shape查看
print(A.shape)#(2, 2)
# 矩阵A的元素类型可以通过dtype查看
print(A.dtype)#int32
# 矩阵的算数运算:
B = np.array([[3, 0], [0, 6]])
print(A+B)
print(A*B)
print(A*10)
'''
[[ 4  2][ 3 10]][[ 3  0][ 0 24]][[10 20][30 40]]
'''
# 广播:形状不同的数组之间也可以进行运算
A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])
print(A*B)
'''
[[10 40][30 80]]
'''
# 访问元素
x = np.array([[51, 55], [14, 19], [0, 4]])
print(x)
'''
[[51 55][14 19][ 0  4]]
'''# 访问第0行
print(x[0])#[51 55]
# 访问(0,1)的元素
print(x[0][1])#55
# 使用数组访问各个元素
# 将x转换为一维数组
x = x.flatten()
print(x)#[51 55 14 19  0  4]
# 获取索引为0,2,4的元素
print(x[np.array([0, 2, 4])])#[51 14  0]# 取出大于15的元素
print(x[x > 15])#[51 55 19]

Numpy 多维数组、矩阵相乘、矩阵乘以向量

第一个例子:

import numpy as npif __name__ == '__main__':A=np.array([[1,2],[3,4]])B=np.array([[5,6],[7,8]])print(B)print(np.ndim(B)) # 表示B是二维数组,也就是说有两列print(B.shape) # 输出B的形状,几行几列C=np.dot(A,B) # 矩阵相乘,需要满足矩阵乘法原则print(C)

输出:

[[5 6][7 8]]
2
(2, 2)
[[19 22][43 50]]

第二个例子:

import numpy as npif __name__ == '__main__':A=np.array([1,2]) # 2*1B=np.array([[1,3,5],[2,4,6]]) #2*3print(A)print(np.ndim(A))print(A.shape)print(B)print(np.ndim(B))print(B.shape)C=np.dot(A,B) #1*3print(C)print(np.ndim(C))print(C.shape)

结果:

[1 2]
1
(2,)
[[1 3 5][2 4 6]]
2
(2, 3)
[ 5 11 17]
1
(3,)

第三个例子:

import numpy as npif __name__ == '__main__':A=np.array([[1,2],[3,4],[5,6]]) # 3*2B=np.array([[7],[8]]) #2*1print(A)print(np.ndim(A))print(A.shape)print(B)print(np.ndim(B))print(B.shape)C=np.dot(A,B) #3*1print(C)print(np.ndim(C))print(C.shape)

结果:

[[1 2][3 4][5 6]]
2
(3, 2)
[[7][8]]
2
(2, 1)
[[23][53][83]]
2
(3, 1)

第四个例子:

import numpy as npif __name__ == '__main__':A=np.array([[1,2],[3,4],[5,6]]) # 3*2B=np.array([7,8])# 2*1print(A)print(np.ndim(A))print(A.shape)print(B)print(np.ndim(B))print(B.shape)C=np.dot(A,B) print(C)print(np.ndim(C))print(C.shape)

结果

[[1 2][3 4][5 6]]
2
(3, 2)
[7 8]
1
(2,)
[23 53 83]
1
(3,)

根据这里面2、3、4例子,可以总结出一个简便的理解思路。

一个矩阵乘一个向量,不用管那个向量究竟是行向量还是列向量。也不要管输出的向量是行向量还是列向量。因为我们的目的不是分辨它的形式是如何,而是要得到新向量里面的元素,所以就忽略它的存储形式。事实上,如果你非要弄清楚它的存储形式,那么你将被numpy的语法绕晕,把时间浪费到不重要的地方。

如果矩阵A是三行两列,一维向量B(也就是数组)里面有x个数,

x=矩阵的行的话,那么A乘以B就调用np.dot(B,A)

X=矩阵的列的话,那么A乘以B就调用np.dot(A,B)

用图来理解:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】——期末复习题题库(1)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

感知机实现与、或、与非门和异或门

机器学习-感知机【perceptron】what is 感知机单层感知机运用实例多层感知机what is 感知机 感知机接收多个输入信号&#xff0c;输出一个信号。 接收两个信号的感知机&#xff0c;如下图&#xff1a; x1与x2是输入信号&#xff1b;y是输出信号&#xff1b; w1与w2是权重。圆…

神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现what is 激活函数激活函数的python实现python实现阶跃函数python实现sigmoid函数python实现ReLU函数激活函数的特点what is 激活函数 感知机的网络结构如下&#xff1a; 左图中&#xff0c;偏置b没有被画出来&#xff0c;如果要表示出b&…

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数&#xff0c;其他项目想…

使用python构建三层神经网络、softmax函数

【机器学习】使用python手写三层神经网络输入层到第一层的传递表示第一层到第二层的传递表示第二层到第三层的传递表示全过程传递表示代码输入层到第一层的传递表示 首先看输入层到第一层的第一个神经元的信号传递过程&#xff1a; 可以用数学式子表示第一层的第一个神经元的值…

使用python对数据集进行批处理

【机器学习】使用python对数据集进行批处理 只输入一张图像数据过程和一次性处理100张图像数据过程中&#xff0c;数组形状变换如下图所示&#xff1a; 这些数组形状可以在代码中输出出来&#xff1a; def get_data():(x_train, t_train), (x_test, t_test) load_mnist(norm…

损失函数、python实现均方误差、交叉熵误差函数、mini-batch的损失函数

损失函数what is 损失函数均方误差交叉熵误差计算mini-batch学习的损失函数why 损失函数what is 损失函数 神经网络学习目标是找到各层合适的权重参数w和偏置b&#xff0c;使得最终的输出结果能够与实际结果更加接近。那神经网络的这些权重参数是如何得到的&#xff1a;靠损失…

梯度、梯度法、python实现神经网络的梯度计算

【机器学习】梯度、梯度法、python实现神经网络的梯度计算一、python实现求导的代码&#xff1a;二、what is 梯度三、使用梯度法寻找神经网络的最优参数四、神经网络的梯度计算一、python实现求导的代码&#xff1a; 导数含义也就是&#xff1a;变量x一个微小的变化将导致f(x…

使用反向传播算法计算参数的梯度并用python实现加法和乘法节点的反向传播

使用反向传播算法计算参数的梯度并用python实现加法和乘法节点的反向传播一、what is 反向传播二、乘法节点的反向传播三、加法节点的反向传播四、加法层和乘法层混合应用一、what is 反向传播 误差反向传播法是一种高效计算权重参数的梯度的方法。所谓的反向传播&#xff0c;…

结合反向传播算法使用python实现神经网络的ReLU、Sigmoid、Affine、Softmax-with-Loss层

结合反向传播算法使用python实现神经网络的ReLU、Sigmoid激活函数层 这里写目录标题一、ReLU层的实现二、Sigmoid层的实现三、实现神经网络的Affine层四、Softmax-with-Loss层实现一、ReLU层的实现 正向传播时的输入大于0&#xff0c;则反向传播会将上游的值原封不动地传给下游…

神经网络的SGD、Momentum、AdaGrad、Adam最优化方法及其python实现

神经网络的SGD、Momentum、AdaGrad、Adam最优化方法及其python实现一、SGD二、Momentum-动量三、AdaGrad四、Adam一、SGD 右边的值更新左边的值&#xff0c;每次更新朝着梯度方向前进一小步。 class SGD:"""随机梯度下降法&#xff08;Stochastic Gradient Des…

关于神经网络权重初始值的设置的研究

关于神经网络权重初始值的设置的研究一、权重初始值二、权重初始值会影响隐藏层的激活值分布三、Xavier初始值四、He初始值五、基于MNIST数据集的权重初始值的比较一、权重初始值 权值衰减—抑制过拟合、提高泛化能力。 所谓权值衰减&#xff0c;即&#xff0c;以减小权重参数…

使用权值衰减算法解决神经网络过拟合问题、python实现

使用权值衰减算法解决神经网络过拟合问题、python实现一、what is 过拟合二、过拟合原因三、权值衰减四、实验验证4.1制造过拟合现象4.2使用权值衰减抑制过拟合一、what is 过拟合 过拟合指只能拟合训练数据&#xff0c;但不能很好拟合不包含在训练数据中的其他数据的状态。 …

解决神经网络过拟合问题—Dropout方法、python实现

解决神经网络过拟合问题—Dropout方法一、what is Dropout&#xff1f;如何实现&#xff1f;二、使用和不使用Dropout的训练结果对比一、what is Dropout&#xff1f;如何实现&#xff1f; 如果网络模型复杂&#xff0c;L2范数权值衰减方法就难以对付过拟合。这种情况下&#…

神经网络如何调参、超参数的最优化方法、python实现

神经网络如何调参、超参数的最优化方法、python实现一、what is 超参数二、超参数优化实验一、what is 超参数 超参数是什么&#xff0c;其实就是&#xff0c;各层神经元数量、batch大小、学习率等人为设定的一些数。 数据集分为训练数据、测试数据、验证数据。 用测试数据评…

卷积神经网络的整体结构、卷积层、池化、python实现

卷积神经网络的整体结构、卷积层、池化、python实现一、整体结构二、卷积层三、池化层四、python实现卷积层、池化层一、整体结构 神经网络相邻层所有神经元之间都有连接&#xff0c;称为全连接。前面用Affine层实现了全连接。 举个例子 全连接神经网络结构&#xff1a; 卷积…

基于随机梯度下降法的手写数字识别、epoch是什么、python实现

基于随机梯度下降法的手写数字识别、epoch是什么、python实现一、普通的随机梯度下降法的手写数字识别1.1 学习流程1.2 二层神经网络类1.3 使用MNIST数据集进行学习注&#xff1a;关于什么是epoch二、基于误差反向传播算法求梯度的手写数字识别2.1 学习流程2.2 实现与结果分析一…

基于卷积神经网络的手写数字识别、python实现

一、CNN网络结构与构建 参数&#xff1a; 输入数据的维数&#xff0c;通道&#xff0c;高&#xff0c;长 input_dim(1, 28, 28)卷积层的超参数&#xff0c;filter_num&#xff1a;滤波器数量&#xff0c;filter_size&#xff1a;滤波器大小&#xff0c;stride&#xff1a;步幅…

基于深度学习的手写数字识别、python实现

基于深度学习的手写数字识别、python实现一、what is 深度学习二、加深层可以减少网络的参数数量三、深度学习的手写数字识别一、what is 深度学习 深度学习是加深了层的深度神经网络。 二、加深层可以减少网络的参数数量 加深层的网络可以用更少参数获得与没有加深层同等水…

二极管的结构、特性、参数、稳压管的特性和参数

二极管的结构、特性、参数、稳压管的特性和参数本文介绍的定义一、半导体类型二、PN结的结构与单向导电性三、二极管的伏安特性四、二极管的参数五、稳压管本文介绍的定义 本文介绍的定义&#xff1a;半导体、本征半导体、空穴、载流子、杂质半导体、N型半导体、P型半导体、PN…