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)

用图来理解:

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

  1. Python之Numpy常用操作

    Numpy常用操作 文章目录 Numpy常用操作 1.数组初始化 2.数组基本运算 3.多维数组组合 4.数组中查找最大/小索引 5.查找符合条件元素索引 6.更改数组维度 1.数组初始化 # 生成特 ...

  2. python列表常用操作函数_Python入门——列表常用操作

    Python列表常用操作 准备 控制台输入ipython parallels@parallels-vm:~$ ipythonPython 2.7.12 (default, Dec 4 2017, 14 ...

  3. python 定义一个无限制的二维数组方法

    python 定义一个无限制的二维数组方法 自定义二维数组方式 n = int(input()) mapL = [list(map(int,input().split())) for _ in ran ...

  4. 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 python

    http://noi.openjudge.cn/ch0108/03/ """ 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 http://noi.openjudg ...

  5. 7-67 使用二维数组实现Matrix(矩阵)。 (60 分)

    使用二维数组实现Matrix(矩阵). 定义Matrix(矩阵)类,要求如下: a) 变量:matrix(int型二维数组),row(行数),column(列数): b) 方法:实现两个矩阵的乘法,所 ...

  6. 利用二维数组实现一个矩阵类:Matrix

    利用二维数组实现一个矩阵类:Matrix.要求提供以下操作: (1)set(int row, int col, double value):将第row行第col列的元素赋值为value: (2)get ...

  7. 经典错误:二维数组与实际矩阵的差异所构成的易错点

    经典错误:二维数组与实际矩阵的差异所构成的易错点 标签:C语言 二维数组 矩阵 by 小威威 1.矩阵与二维数组的差异 在线性代数的课程中,我们接触到了矩阵这一工具,不难发现它很类似于C语言中的二维数 ...

  8. c语言二维数组对角线输出字符,用C编程一个4*4的矩阵,用二维数组,求对角线元素的和。,c语言如何使二维数组 输出为矩阵的形式...

    导航:网站首页 > 用C编程一个4*4的矩阵,用二维数组,求对角线元素的和.,c语言如何使二维数组 输出为矩阵的形式 用C编程一个4*4的矩阵,用二维数组,求对角线元素的和.,c语言如何使二维数 ...

  9. Python之数据分析(Numpy的使用、多维数组、数据类型)

    文章目录 写在前面 一.数据分析与Numpy 二.多维数组 三.Numpy的数据类型 写在前面 代码中的np表示的是numpy,因为导入的时候是:import numpy as np 一.数据分析与N ...

最新文章

  1. Python的一些技巧
  2. 嵌入式系统开发工程师入行前十项准备
  3. 常用JavaScript函数 31 - 46(自我总结)
  4. ubuntu中安装mongodb注意事项
  5. spark TaskMemoryManager shuffle 内存管理
  6. 启用Mac系统读写NFTS磁盘
  7. Spring JPA 使用@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy 自动生成时间和修改者...
  8. AI为移动医疗APP加码,智能提醒你:该吃药了!
  9. K3 CLOUD API接口说明书V2.0
  10. 融合正弦余弦和变异选择的蝗虫优化算法
  11. Android应用商店——项目介绍
  12. 【综述】(MIT博士)林达华老师-概率模型与计算机视觉”
  13. 笔记本外接显示器之后扩展屏分辨率问题
  14. 安卓电子书格式_全网免费电子书资源,都在这个神器里了
  15. 连接数据库出现java.lang.NullPointerException
  16. python3字典的应用方法及技巧
  17. variable argument parameter的区别
  18. 如何搭建实验室智能化管理,易云维有整体解决方案
  19. 物流基础知识(十六)
  20. 征战奥斯卡,3部冲奥动画短片制作解析抢鲜看

热门文章

  1. WIN7开启WIFI
  2. VMware ubuntu20.04 server随win10自动启动与关闭
  3. Google强化学习框架SEED RL环境部署
  4. Linux安装后初始优化步骤(仅适用于CentOS、RedHat)
  5. Ubuntu16.04安装Hadoop+Spark+pyspark大数据python开发环境
  6. vite + vue2 + eslint 项目配置
  7. android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...
  8. 怎么查看ip地址下的php文件夹,pe下查看原系统ip的方法
  9. 绝地求生7月5日服务器维护,绝地求生7月5日更新到几点 吃鸡更新维护公告
  10. linux中常用安装程序的方法,Linux下常见的软件安装方式