python矩阵

Python NumPy学习总结

老子叫甜甜 提交于 2019-12-19 21:02:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、yNumPy - 简介 NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量机器学习框架的基础库! 通过Numpy,可以进行如下操作: 数组的算数和逻辑运算。 傅立叶变换和用于图形操作的例程。 与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。 现在一般通过Numpy、Scipy(Scientific Python)和Matplotlib(绘图库)结合来替代MatLab,是一个流行的技术计算平台。 NumPy的优点: 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多; NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的; NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多 当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此

python中mat()函数的使用

瘦欲@ 提交于 2019-12-19 15:09:26
随机生成的数组与使用mat函数之后的类型是发生了变化的,尽管他们显示的东西没有什么区别,但是实质上,他们的类型是不同的。用mat函数转换为矩阵之后可以才进行一些线性代数的操作。 # -*- coding: utf-8 -*- # @Time : 2019/12/19 12:54 # @Author : Zhanghui import numpy as np MAXNUM = 10 #设置矩阵元素的最大值 MINNUM = 0 #设置矩阵元素的最小值 ROW = 2 #设置矩阵的行数 COL = 3 #设置矩阵的列数 randomMatrix = np . random . randint ( MINNUM , MAXNUM , ( ROW , COL ) ) print ( randomMatrix ) print ( type ( randomMatrix ) ) y = np . mat ( randomMatrix ) print ( type ( y ) ) print ( y ) [ [ 1 2 4 ] [ 0 2 1 ] ] < class 'numpy.ndarray' > < class 'numpy.matrix' > [ [ 1 2 4 ] [ 0 2 1 ] ] 来源: CSDN 作者: 鱼速 链接: https://blog.csdn.net/weixin

【Python学习之路】Numpy 从 Matlab 到 Numpy

老子叫甜甜 提交于 2019-12-15 23:42:21
从 Matlab 到 Numpy ##Numpy 和 Matlab 比较 Numpy 和 Matlab 有很多相似的地方,但 Numpy 并非 Matlab 的克隆,它们之间存在很多差异,例如: MATLAB® Numpy 基本类型为双精度浮点数组,以二维矩阵为主 基本类型为 ndarray ,有特殊的 matrix 类 1-based 索引 0-based 索引 脚本主要用于线性代数计算 可以使用其他的 Python 特性 采用值传递的方式进行计算 切片返回复制 采用引用传递的方式进行计算 切片返回引用 文件名必须和函数名相同 函数可以在任何地方任何文件中定义 收费 免费 2D,3D图像支持 依赖第三方库如 matplotlib 等 完全的编译环境 依赖于 Python 提供的编译环境 array 还是 matrix? Numpy 中不仅提供了 array 这个基本类型,还提供了支持矩阵操作的类 matrix ,但是一般推荐使用 array : 很多 numpy 函数返回的是 array ,不是 matrix 在 array 中,逐元素操作和矩阵操作有着明显的不同 向量可以不被视为矩阵 具体说来: *, dot(), multiply() array : * -逐元素乘法, dot() -矩阵乘法 matrix : * -矩阵乘法, multiply() -逐元素乘法 处理向量

【Python学习之路】Numpy 矩阵

早过忘川 提交于 2019-12-15 21:58:17
矩阵 使用 mat 方法将 2 维数组转化为矩阵: import numpy as np a = np . array ( [ [ 1 , 2 , 4 ] , [ 2 , 5 , 3 ] , [ 7 , 8 , 9 ] ] ) A = np . mat ( a ) A matrix([[1, 2, 4], [2, 5, 3], [7, 8, 9]]) 也可以使用 Matlab 的语法传入一个字符串来生成矩阵: A = np . mat ( '1,2,4;2,5,3;7,8,9' ) A matrix([[1, 2, 4], [2, 5, 3], [7, 8, 9]]) 利用分块创造新的矩阵: a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) b = np . array ( [ [ 10 , 20 ] , [ 30 , 40 ] ] ) np . bmat ( 'a,b;b,a' ) matrix([[ 1, 2, 10, 20], [ 3, 4, 30, 40], [10, 20, 1, 2], [30, 40, 3, 4]]) 矩阵与向量的乘法: x = np . array ( [ [ 1 ] , [ 2 ] , [ 3 ] ] ) x array([[1], [2], [3]]) A * x matrix([[17], [21],

python中shape()的简单用法

感情迁移 提交于 2019-12-13 15:38:26
shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。 shape的输入参数可以是一个整数(表示维度),也可以是一个矩阵。以下例子可能会好理解一些: import numpy as np x = np . array ( [ [ 1 , 2 , 5 ] , [ 2 , 3 , 5 ] , [ 3 , 4 , 5 ] , [ 2 , 3 , 6 ] ] ) #输出数组的行和列数 print x . shape #结果: ( 4 , 3 ) #只输出行数 print x . shape [ 0 ] #结果: 4 #只输出列数 print x . shape [ 1 ] #结果: 3 来源: CSDN 作者: 李子岐 链接: https://blog.csdn.net/weixin_42349855/article/details/103525855

python数学库

烈酒焚心 提交于 2019-12-11 14:40:37
python数学库 本文是学习机器学习过程中的一些笔记,难免有些错误,请批评指正 numpy 标准Python的列表(list)中,元素本质是对象,如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。因此,Numpy提供了np.array()来存储单一数据类型的多维数组。Numpy对于数组(矩阵)的运算速度比list要快。 使用array创建 # 通过array函数传递list对象 L = [1, 2, 3, 4, 5, 6] a = np.array(L) print "a = ", a print type(a) 也可以这样创建numpy多维数组 b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print b 数组的大小(行,列)可以通过shape属性来获得 print a.shape 也可以对数组大小进行强制修改,注:从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变。 a.shape = 4, 3 当某个轴为-1时,将根据数组元素的个数自动计算此轴的长度 b.shape = 2, -1 使用reshape方法,可以创建改变了尺寸的新数组,原数组的shape保持不变,数组b和c共享内存

希尔密码---1

倾然丶 夕夏残阳落幕 提交于 2019-12-10 23:26:06
在之前吧我们讲过了希尔密码的理论,接下来我们讲实战。 abcde…x y z 12345…242526 有的题a是从0开始的。 一、条件 首先,我们打ctf一般会给我们两个条件: 1.密文 2.矩阵(也叫解密矩阵) 二、目的 1、根据矩阵,求出逆矩阵。 2、逆矩阵与密文对应的矩阵相乘。(一定要注意写密文矩阵的顺序) 3、得到矩阵b,每一个数与26相余。 4.得到的余数转ascii 三、实战 例题一、 密文:dloguszijluswogany 矩阵: 1 2 0 1 1、逆矩阵: from numpy import * a1 = mat ( [ [ 1 , 2 ] , [ 0 , 1 ] ] ) print ( a1 ) a2 = a1 . I print ( a2 ) [ [ 1 . - 2 . ] [ 0 . 1 . ] ] 2、密文转化: d l o g u s z i j l u s w o g a n y 4 12 15 7 21 19 26 9 10 12 21 19 23 15 7 1 14 25 3、逆矩阵与密文矩阵相乘 from numpy import * a = mat ( [ [ 1 , - 2 ] , [ 0 , 1 ] ] ) b = mat ( [ [ 4 , 15 , 21 , 26 , 10 , 21 , 23 , 7 , 14 ] , [ 12

主成分分析(PCA)原理详解

我的未来我决定 提交于 2019-12-10 10:07:52
个人分类: 机器学习与Python 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongkelee/article/details/44064401 转载请声明出处: http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。 因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。 2. 问题描述

python-numpy模块(对矩阵的处理,ndarray对象)

早过忘川 提交于 2019-12-10 05:09:46
一.numpy模块 import numpy as np 约定俗称要把他变成np 1.模块官方文档地址 https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 2.创建矩阵 1.np.array import numpy as np #创建一维的ndarray对象 arr = np.array([1, 2, 3]) print(arr) #[1 2 3] #创建二维的ndarray对象 arr = np.array([[1, 2, 3], [4,5,6]]) print(arr) ''' [[1 2 3] [4 5 6]] ''' #创建三维的ndarray对象 arr = np.array([[[1, 2, 3],[3,2,1]], [[4,5,6],[6,5,4]]]) print(arr) ''' [[[1 2 3] [3 2 1]] [[4 5 6] [6 5 4]]] ''' #我们可以这样理解.其实内这个可以相当于几何里面的,点,线,面,里面各个元素相当一个点,一个列表里面有几个元素相当于线也就是一维,然后列表里面套列表相当于线,以此类推 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 3.对于矩阵的操作(ndarray对象的方法) 1

顺时针打印矩阵(python)

荒凉一梦 提交于 2019-12-09 20:13:17
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 1 # -*- coding:utf-8 -*- 2 class Solution: 3 # matrix类型为二维列表,需要返回列表 4 def printMatrix(self, matrix): 5 # write code here 6 def help(topRow,topCol,botRow,botCol): 7 8 if topRow == botRow:#只有一行: 9 while topCol <=botCol: 10 res.append(matrix[topRow][topCol]) 11 topCol+=1 12 elif topCol == botCol:#只有一行 13 while topRow<=botRow: 14 res.append(matrix[topRow][topCol]) 15 topRow+=1 16 else: 17 curCol=topCol 18 curRow=topRow 19 while curCol<botCol: 20 res.append