线性代数和numpy

一、代数是什么

  代数->数的抽象表示->向量空间(线性空间)

  线代->线性代数

关系:

  向量空间之间和内部转换是通过线性变换。

实数——一维空间的点

复数——二维空间的点

  如果两个向量的组合可以生成平面,则要求两个向量要线性无关。

  推广一下,N维空间里点可以用N个线性无关的向量来表示。这N个向量就是这个平面的基。

  向量的封闭——对加法和数乘封闭。

    向量V中任意两个向量a,b加法a+b,仍然在V中,实数乘法x*b,仍然也在V中。

线性相关——其中的一个向量可以用其他的向量表示出来。

矩阵操作在python里编程依赖一个最常用的库——numpy

1、矩阵的创建

a=np.arange(1,5)
a=np.array([1,2,3,4,5])
print a, a.dtype, a.shape, a.size, a.ndim

np.arange类似range函数
np.array用来生成矩阵
dtype是数据类型,有int64, complex, uint16等
shape是个元组属性,表示每一维的宽度
size是所有元素个数
ndim是维数
b=np.array([1,2,3],dtype=‘float16‘) # int64, complex, uint16......
print b, b.dtype

m=np.array([np.arange(6),np.arange(6)])
print m, m.shape, m.size

# 每一个[]代表一维,比如
# [[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]], 代表矩阵的维度是(2,2,3)
# 其中第一个2,代表最外层的两个[],第二个2代表第二层[],第三个3代表最里层的维度。
n=np.array([[1,2,3,4],[5,6,7,8]])
print n, n[0,2], n[1,1]

m=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print m.shape
 
x=m.ravel()
y=n.flatten()
print x
print y

ravel()和flatten()看起来效果一样,都是把矩阵展平了。它们的区别在于
ravel()返回的是原有数据的一个映射(view),没有分配新的存储
flatten()返回的是新的数据
因此如果我们改变它们的值,就可以看出区别

numpy还有一些函数有这样的区别,关键在于判断函数返回是原数据的映射还是返回新的数据。

……

等等一共三十道题,详情可参阅黑板课老师的notebook。

正交:A矩阵的转置乘以B等于0。

可逆:方阵,行数等于列数

   列向量线性无关

最小二乘法——投影解释

    二维平面上,一个点向一条直线投影。

    扩展到N维里边,就是让一个直线拟合若干个点,让这些点到线的距离和最短。y=ax+b

    但有的时候,欠拟合,可以往更高维的空间投影,y=ax^3+bx^2+cx+d,或者更高维的空间。

    但维数过高容易过拟合。

行列式

  从平行四边形的面积推出来。

时间: 2024-12-21 06:02:55

线性代数和numpy的相关文章

线性代数和概率论——机器学习基础

目录 一.线性代数 常见概念 线性变换 二.概率论 两大学派 两种概率估计方法 举例说明 两种随机变量 一.线性代数 万事万物都可以被抽象成某些特征的组合,线性代数的本质是将具体事物抽象为数学对象,描述其静态和动态的特征. 常见概念 标量(scalar) 一个标量 a 可以是整数.实数或复数 向量(vector) 多个标量 a1,a2,?,an 按一定顺序组成一个序列.通常用一维数组表示,例如语音信号 矩阵(matrix) 矩阵包含向量,一个m*n的矩阵,可以看成是由n个m维的列向量构成,也可以

numpy线性代数基础 - Python和MATLAB矩阵处理的不同

http://blog.csdn.net/pipisorry/article/details/39087583 在介绍工具之前先对理论基础进行必要的回顾是很必要的.没有理论的基础,讲再多的应用都是空中楼阁.本文主要设涉及线性代数和矩阵论的基本内容.先回顾这部分理论基础,然后给出MATLAB,继而给出Python的处理.个人感觉,因为Python是面向对象的,操纵起来会更接近人的正常思维:而MATLAB大多是以函数实现的,是向对象施加的一个操作.比如,A是一个矩阵,它有一个属性attr.用Pyth

Python之Numpy详细教程

NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的. 也开发了另一个包 Numarray ,它拥有一些额外的功能. 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包. 这个开源项目有很多贡献者. NumPy 操作 使用NumPy,开

NumPy库实现矩阵计算

随着机器学习技术越来越向着整个社会进行推广,因此学好线性代数和Python当中的numpy库就相当重要了.我们应该知道numpy库的使用是sklearn库和opencv库的基础.主要用于矩阵的计算.当然,我们做做数模或者人工神经网络建模也可以使用MATLAB.不过现在Python才是现在的主流,因为Python可以用于服务器后台的实现,不仅仅看可以用于科研,还可以做出一些比较实用的一些东西.如果还想用于物联网等领域的话,则可以使用C++进行算法的实现.因为我们在嵌入式开发当中,一般使用的是lin

矩阵乘法优化线性递推

矩阵乘法是线性代数中一块很重要的内容.矩阵乘法的定义很奇怪[1],但正是这种奇怪的性质,让矩阵乘法成为在除了线性代数和其衍生学科(还有诸如矩阵力学之类)外最广泛使用的关于矩阵变换的应用.(什么?FFT不属于矩阵变换吧...) 注: [1]: 矩阵乘法有另外的很多定义,如未说明,指的是中间不带符号的矩阵乘法,即一般矩阵乘积.另有 标量乘积(即所有数乘上一个固定的数),阿达马乘积等,没有那么诡异,但是在大多数问题的用途上也不大. 你不会矩阵乘法?没关系,下一篇会写到的 矩阵乘法的本质 矩阵乘法的本质

多元线性回归分析浅谈

  回归分析方法说白了就是处理多个变量相互依赖关系的一种数理统计方法(之前并没学过数理统计,恶补了一下,挺爽的~).这篇随笔中主要运用了线性代数和数理统计知识,欢迎各方大佬指正,错误之处,不胜感激. 一.建立模型 这里我们假定研究变量Y与x1,x2,x3--xm,m个变量之间的相互依赖关系.采取现实生活中观测的n组变量Y与变量x数据,建立如下方程组: yi=β0+β1xi1+β2xi2+--βmxim+εi(i=1,2,3--n) 即:Y=Cβ+ε 为弥补建立的方程组与实际数据的误差,引入ε为随

《python for data analysis》第四章,numpy的基本使用

<利用python进行数据分析>第四章的程序,介绍了numpy的基本使用方法.(第三章为Ipython的基本使用) 科学计算.常用函数.数组处理.线性代数运算.随机模块-- # -*- coding:utf-8 -*-# <python for data analysis>第四章, numpy基础# 数组与矢量计算import numpy as npimport time # 开始计时start = time.time() # 创建一个arraydata = np.array([[

Python3快速入门(十二)——NumPy

Python3快速入门(十二)--NumPy 一.NumPy简介 1.NumPy简介 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时对数组运算提供了大量的数学函数库.Numpy 是一个运行速度非常快的数学库,内部解除了CPython的GIL(全局解释器锁),运行效率极好,主要用于数组计算,是大量机器学习框架的基础库,NumPy主要包括如下:(1)强大的N维数组对象 ndarray(2)广播功能函数(3)整合 C/C++/

[转]机器学习入门

这是一篇很难写的文章,因为我希望这篇文章能对学习者有所启发.我在空白页前坐下,并且问自己了一个很难的问题:什么样的库.课程.论文和书籍对于机器学习的初学者来说是最好的. 文章里到底写什么.不写什么,这个问题真的让我很烦恼.我必须把自己当做一个程序员和一个机器学习的初学者,站在这个角度去考虑最合适的资源. 我找出了每个类型中最适合的资源.如果你是一个真正的初学者,并且乐意于开始了解机器学习领域的相关知识,我希望,你可以在我的文章中找到有用的资料.我的建议是,从中挑出一件来,一本书或者是一个库,反复