python矩阵

用Python的Numpy求解线性方程组

北慕城南 提交于 2019-12-03 17:32:56
原文链接: http://tecdat.cn/?p=8445 在本文中,您将看到如何使用Python的Numpy库解决线性方程组。 什么是线性方程组? 维基百科将 线性方程组 定义为: 在数学中,线性方程组(或线性系统)是两个或多个涉及同一组变量的线性方程的集合。 解决线性方程组的最终目标是找到未知变量的值。这是带有两个未知变量的线性方程组的示例, x 并且 y : 等式1: 4x + 3y = 20 -5x + 9y = 26 为了解决上述线性方程组,我们需要找到 x 和 y 变量的值。解决此类系统的方法有多种,例如消除变量,克莱默规则,行缩减技术和矩阵解决方案。在本文中,我们将介绍矩阵解决方案。 在矩阵解中,要求解的线性方程组以矩阵形式表示 AX = B 。例如,我们可以用矩阵形式表示 等式1 ,如下所示: A = [[ 4 3] [-5 9]] X = [[x] [y]] B = [[20] [26]] 要查找的值 x 和 y 变量 方程1 ,我们需要找到在矩阵中的值 X 。为此,我们可以采用矩阵逆的点积 A 和矩阵 B ,如下所示: X = inverse(A).B 用numpy求解线性方程组 要求解线性方程组,我们需要执行两个操作:矩阵求逆和矩阵点积。Python的Numpy库支持这两种操作。如果尚未安装Numpy库,则可以使用以下 pip 命令: $ pip

python numpy学习

若如初见. 提交于 2019-12-03 12:04:42
以下代码来源于本博文作者观看 大神视频 并纯手敲。 目录 numpy的属性 创建array numpy的运算1 随机数生成以及矩阵的运算2 numpy的索引 array合并 array分割 numpy的浅拷贝和深拷贝 numpy的属性 import numpy as np array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(array) print(array.ndim) # 维度 2 print(array.shape) # 形状 (3, 3) print(array.size) # 大小 9 print(array.dtype) # 元素类型 int32 numpy创建array import numpy as np a = np.array([1, 2, 3], dtype=np.int32) print(a.dtype) # int32 b = np.array([1, 2, 3], dtype=np.float) print(b.dtype) # float64 c = np.array([1, 2, 3]) d = np.array([[1, 2, 3], [4, 5, 6]]) print(d) # 二维矩阵 zero = np.zeros((2, 3)) print(zero) #

数据挖掘学习(三)――文本挖掘

匿名 (未验证) 提交于 2019-12-03 00:38:01
对情感进行分析,对评论数据进行相应的分析。 可以用结巴进行分词,主要是划分各文本之间的关系,进行分词操作。 Dict.txt是指结巴使用的分词,也可以自己定义相应的结巴词典,也可以下载一些好用的词典。 第一个参数:我们的词汇; 第二个参数:词频(即重要的程度); 第三个参数:词性 1)使用jieba进行分词: #!/usr/bin/env python # _*_ UTF-8 _*_ import jieba sentence = " 我喜欢东方明珠 " # cut_all=True :为全模式。 # cut_all=FALSE :精准模式。 words = jieba.cut(sentence , cut_all = True ) print (words) # 全模式分词,用的是循环才能获取相应的结果,如果直接 print 则显示不成功。 for item in words: print (item) print ( "----------------" ) # 精准模式分词。 words2 = jieba.cut(sentence , cut_all = False ) for item in words2: print (item) print ( "----------------" ) # 搜索引擎分词: words3 = jieba.cut_for_search

基础篇 | 15 C++ 科学计算 - OpenBLAS的安装与使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
类似于Anaconda里面的numpy,C++里面也有类似的矩阵运算库,称之为BLAS(Basic Linear Algebra Subprograms):基础线性代数子程序库。 支持的数据类型有: 单精度浮点数(float) 双精度浮点数(double) 单精度负数 双精度负数 在机器学习里面一般我们只用float类型,很少使用double,考虑到性能,我们认为float的精度已经够了,而且速度快。 还有一个更高级的叫LAPACK,现在我们常用的BLAS其实就是LAPACK里面的一部分。 BLAS支持对子程序的封装,其实就是子函数了,它的子程序分类: Level1: 标量操作、向量操作、向量-向量操作 Level2:矩阵-向量操作 Level3: 矩阵-矩阵操作 BLAS:标准实现(Fortran) CBLAS:C的BLAS标准实现 Atlas:一种优化实现 GotoBLAS:多线程性能良好的优化实现(已停止更新) OpenBLAS:目前性能最好的开源实现,基于GotoBLAS MKL:Intel实现,在Intel处理器上性能最佳 各种BLAS实现的优劣对比 市面上的BLAS实现非常多,最早是用Fortran。 CBLAS是C的BLAS标准实现,但是这种实现有个缺点,速度非常慢。 Atlas:比C要好,但不够好。比如腾讯QQ空间有一个功能,就是标脸框那个程序,怎么做呢

tf矩阵基础

匿名 (未验证) 提交于 2019-12-02 23:57:01
一、Placeholder Tensorflow的设计理念称之为计算流图,在编写程序时,首先构筑整个系统的graph,代码并不会直接生效,这一点和python的其他数值计算库(如Numpy等)不同,graph为静态的,类似于docker中的镜像。然后,在实际的运行时,启动一个session,程序才会真正的运行。这样做的好处就是:避免反复地切换底层程序实际运行的上下文,tensorflow帮你优化整个系统的代码。我们知道,很多python程序的底层为C语言或者其他语言,执行一行脚本,就要切换一次,是有成本的,tensorflow通过计算流图的方式,帮你优化整个session需要执行的代码,还是很有优势的。 所以placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。 import tensorflow as tfdata1 = tf . placeholder ( tf . float32 )     #placeholder占位符data2 = tf.placeholder(tf.float32)dataAdd = tf.add(data1,data2)with tf.Session() as sess:

吴恩达深度学习编程作业1-1

匿名 (未验证) 提交于 2019-12-02 23:37:01
import numpy as np import matplotlib.pyplot as plt import h5py import scipy from PIL import Image from scipy import ndimage % matplotlib inline 第一部分: python 的numpy 基础练习 1.1“sigmoid ” def sigmoid(x): """ 计算x的sigmoid 参数: x 是一个值 或者一个数列,范围是无穷 返回: s -- simoid(x) """ s = 1.0/(1+1/np.exp(x)) return s 测试当x是一个值或者一个数列时候不同结果 print('x is a number of 3',sigmoid(3)) print('x is a array of [1,2,3]',sigmoid(np.array([1,2,3]))) 0utput: x is a number of 3 0.9525741268224334 x is a array of [1,2,3] [0.73105858 0.88079708 0.95257413] 1.2 编写sigmoid_derivative方法实现sigmoid 梯度计算 sigmoid 的代价函数和推导过程可以看吴恩达老师的讲解,很好很详细。

灰度共生矩阵-python

匿名 (未验证) 提交于 2019-12-02 22:51:30
博主基于Github Pages与Hexo搭建了个人博客,欢迎访问 http://maself.top 纹理特征刻画了图像中重复出现的局部模式与他们的排列规则,常用于图像分类和场景识别。其只能反映物体表面的特性,无法完全反映出物体的本质属性,所以仅仅利用纹理特征无法获得图像的高层次内容。 优点 : 1. 具有旋转不变性 2. 具有良好的抗噪性能。 缺点 : 1. 当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差 2. 有可能受到光照、反射情况的影响 3. 从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理 常用的纹理特征提取方法一般分为四大类: 1.基于统计的方法:灰度共生矩阵、灰度行程统计、灰度差分统计、局部灰度统计、半方差图、自相关函数等 优点:方法简单,易于实现。 缺点:无法利用全局信息,与人类视觉模型不匹配;计算复杂度较高,计算耗时。 较为经典的算法为灰度共生矩阵方法,其通过统计不同灰度值对的共现频率得到灰度共生矩阵,基于矩阵可计算出14种统计量:能量、熵、对比度、均匀性、相关性、方差、和平均、和方差、和熵、差方差、差平均、差熵、相关信息测度以及最大相关系数。 灰度梯度共生矩阵将图梯度信息加入到灰度共生矩阵中,综合利用图像的灰度与梯度信息,效果更好。图像的梯度信息一般通过梯度算子(也称边缘检测算子)提取,如sobel、canny、reborts等。 2

python numpy np.linalg的用法

匿名 (未验证) 提交于 2019-12-02 22:51:30
numpy下的linalg=linear+algebra,包含很多线性代数的运算,主要用法有以下几种: 1.np.linalg.norm:进行范数运算,范数是对向量(或者矩阵)的度量,是一个标量(scalar); 2.np.linalg.eigh:计算矩阵特征向量,PCA中有使用到,下面是几个例子: >>> w, v = LA.eig(np.diag((1, 2, 3))) >>> w; v array([ 1., 2., 3.]) array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) >>> w, v = LA.eig(np.array([[1, -1], [1, 1]])) >>> w; v array([ 1. + 1.j, 1. - 1.j]) array([[ 0.70710 678 +0.j , 0.70710 678 +0.j ], [ 0.00000000-0.70710 678 j, 0.00000000+0.70710 678 j]]) >>> a = np.array([[1, 1j], [-1j, 1]]) >>> w, v = LA.eig(a) >>> w; v array([ 2.00000000e+00+0.j, 5.98651912e-36+0.j]) # i.e., {2, 0} array([

python画混淆矩阵

匿名 (未验证) 提交于 2019-12-02 22:51:30
混淆矩阵M的每一行代表每个真实类(GT),每一列表示预测的类。即:Mij表示GroundTruth类别为i的所有数据中被预测为类别j的数目。 这里采用画图像的办法,绘制混淆矩阵的表示图。颜色越深,值越大。 # -*- coding: utf-8 -*- # By Changxu Cheng, HUST from __future__ import division import numpy as np from skimage import io, color from PIL import Image, ImageDraw, ImageFont import os def drawCM(matrix, savname): # Display different color for different elements lines, cols = matrix.shape sumline = matrix.sum(axis=1).reshape(lines, 1) ratiomat = matrix / sumline toplot0 = 1 - ratiomat toplot = toplot0.repeat(50).reshape(lines, -1).repeat(50, axis=0) io.imsave(savname, color.gray2rgb(toplot)) #