python矩阵

Strassen算法及其python实现

倖福魔咒の 提交于 2019-11-30 04:22:51
题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法。 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p。 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了:      下面咱们来具体解决这个矩阵相乘的问题。 解法一、暴力解法 其实,通过前面的分析,我们已经很明显的看出,两个具有相同维数的矩阵相乘,其复杂度为O(n^3),参考代码如下: 1 //矩阵乘法,3个for循环搞定 2 void Mul(int** matrixA, int** matrixB, int** matrixC) 3 { 4 for(int i = 0; i < 2; ++i) 5 { 6 for(int j = 0; j < 2; ++j) 7 { 8 matrixC[i][j] = 0; 9 for(int k = 0; k < 2; ++k) 10 { 11 matrixC[i][j] += matrixA[i][k] * matrixB[k][j]; 12 } 13 } 14 } 15 } 解法二、Strassen算法 在解法一中

numpy矩阵的常用用法

自闭症网瘾萝莉.ら 提交于 2019-11-30 02:35:46
基本操作 >>> m= np.mat([1,2,3]) #创建矩阵 >>> m matrix([[1, 2, 3]]) >>> m[0] #取一行 matrix([[1, 2, 3]]) >>> m[0,1] #第一行,第2个数据 2 >>> m[0][1] #注意不能像数组那样取值了 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index 1 is out of bounds for axis 0 with size 1 #将Python的列表转换成NumPy的矩阵 >>> list=[1,2,3] >>> mat(list) matrix([[1, 2, 3]]) #Numpy dnarray转换成Numpy矩阵 >>> n = np.array([1,2,3]) >>> n array([1, 2, 3]) >>> np.mat(n) matrix([[1, 2, 3]]) #排序 >

Python-数据分析工具1-numpy

怎甘沉沦 提交于 2019-11-29 19:30:46
目录 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 (2)创建特殊数组 (3)数组变换 (4)Numpy随机数函数 2 数组索引和切片 (0)数组切片:数组切片可以实现连续多元素选择 (1)数组索引 (2)布尔型索引 (3)花式索引 3 数组的运算 (0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算) (1)通用函数运算(一种可以对数组间执行元素级运算的函数) (2)统计函数运算(对整个数组内或按指定轴向的数据进行统计) (3)集合函数运算 (4)条件逻辑运算 (5)布尔型数组运算 4 数组的存取 5 图像变换 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 1.首先导入numpy库 import numpy as np 2.然后使用构造函数:np.array(arg),参数arg可以是列表或者元组 3.可以通过列表或元组创建一维、二维或多维数组 4.获得dtype(元素类型)和shape(数组维度)属性:arr.dtype和arr.shape 5.创建数组时显示说明类型:np.array(list, dtype=“type”) (2)创建特殊数组 1.创建全0数组函数 np.zeros((5,6)):创建指定长度或形状的全0数组。 np.zeros_like(a):创建与a对象相同尺寸的全0数组。a可以是列表

第3章 神经网络

有些话、适合烂在心里 提交于 2019-11-29 17:05:02
上一章我们学习了感知机。关于感知机,既有好消息,也有坏消息。好消息是,即便对于复杂的函数,感知机也隐含着能够表示它的可能性。上一章已经介绍过,即便是计算机进行的复杂处理,感知机(理论上)也可以将其表示出来。坏消息是,设定权重的工作,即确定合适的、能符合预期的输入与输出的权重,现在还是由人工进行的。上一章中,我们结合与门、或门的真值表人工决定了合适的权重。 神经网络的出现就是为了解决刚才的坏消息。具体地讲,神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。本章中,我们会先介绍神经网络的概要,然后重点关注神经网络进行识别时的处理。在下一章中,我们将了解如何从数据中学习权重参数。 3.1 从感知机到神经网络 神经网络和上一章介绍的感知机有很多共同点。这里,我们主要以两者的差异为中心,来介绍神经网络的结构。 3.1.1 神经网络的例子 用图来表示神经网络的话,如图3-1所示。我们把最左边的一列称为 输入层 ,最右边的一列称为 输出层 ,中间的一列称为中间层。中间层有时也称为 隐藏层 。“隐藏”一词的意思是,隐藏层的神经元(和输入层、输出层不同)肉眼看不见。另外,本书中把输入层到输出层依次称为第0层、第1层、第2层(层号之所以从0开始,是为了方便后面基于Python 进行实现)。图3-1中,第0层对应输入层,第1层对应中间层,第2层对应输出层。 图3-1 神经网络的例子

数据分析之numpy

好久不见. 提交于 2019-11-29 14:46:34
一、NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。 ndarray 对象是用于存放同类型元素的多维数组。 ndarray 中的每个元素在内存中都有相同存储大小的区域。 ndarray 内部由以下内容组成: 一个指向数据(内存或内存映射文件中的一块数据)的指针。 数据类型或 dtype,描述在数组中的固定大小值的格子。 一个表示数组形状(shape)的元组,表示各维度大小的元组。 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。 numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) """ object 数组或嵌套的数列 dtype 数组元素的数据类型,可选 copy 对象是否需要复制,可选 order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) subok 默认返回一个与基类类型一致的数组 ndmin 指定生成数组的最小维度 """ View Code 二、Numpy数据类型 numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上

python中的矩阵、多维数组

孤者浪人 提交于 2019-11-29 14:44:06
2. 创建一般的多维数组 import numpy as np a = np.array([ 1 , 2 , 3 ], dtype = int ) # 创建1*3维数组 array([1,2,3]) type (a) # numpy.ndarray类型 a.shape # 维数信息(3L,) a.dtype.name # 'int32' a.size # 元素个数:3 a.itemsize #每个元素所占用的字节数目:4 b = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]],dtype = int ) # 创建2*3维数组 array([[1,2,3],[4,5,6]]) b.shape # 维数信息(2L,3L) b.size # 元素个数:6 b.itemsize # 每个元素所占用的字节数目:4 c = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]],dtype = 'int16' ) # 创建2*3维数组 array([[1,2,3],[4,5,6]],dtype=int16) c.shape # 维数信息(2L,3L) c.size # 元素个数:6 c.itemsize # 每个元素所占用的字节数目:2 c.ndim # 维数 d = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]

python小白之np功能快速查

旧城冷巷雨未停 提交于 2019-11-29 14:43:44
np一些用法 np.a np.array([1,2,3],dtype=int) #建立一个 一维 数组, np.array([[1,2,3],[2,3,4]]) #建立一个 二维 数组。 np.arange(2,3,0.1) #起点,终点,步长值。含起点值,不含终点值。 np.m np.mean求取均值。经常操作的参数为axis,以m * n矩阵举例: axis 不设置值,对 m*n 个数求均值,返回一个实数 axis = 0:压缩行,对各列求均值,返回 1* n 矩阵 axis =1 :压缩列,对各行求均值,返回 m *1 矩阵 >>> import numpy as np >>> num1 = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]]) >>> now2 = np.mat(num1) >>> now2 matrix([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]) >>> np.mean(now2) # 对所有元素求均值 3.5 >>> np.mean(now2,0) # 压缩行,对各列求均值 matrix([[ 2.5, 3.5, 4.5]]) >>> np.mean(now2,1) # 压缩列,对各行求均值 matrix([[ 2.], [ 3.], [ 4.], [ 5.]]) np.i

python数组和矩阵使用总结

允我心安 提交于 2019-11-29 14:43:08
python数组和矩阵使用总结 1、数组和矩阵常见用法 Python 使用NumPy包完成了对N-维数组的快速便捷操作。使用这个包,需要导入numpy。 SciPy包以NumPy包为基础,大大的扩展了numpy的能力。因此只要导入了scipy,不必在单独导入numpy了!为了使用的方便,scipy包在最外层名字空间中包括了所有的numpy内容。 本文还是区分numpy中实现的和scipy中实现的。 以下默认已经:import numpy as np 以及 impor scipy as sp numpy的基本类型是 多维数组 ,把matrix看做是array的子类。 1.建立矩阵 a1=np.array([1,2,3],dtype=int) #建立一个一维数组,数据类型是int。也可以不指定数据类型,使用默认。几乎所有的数组建立函数都可以指定数据类型,即dtype的取值。 a2=np.array([[1,2,3],[2,3,4]]) #建立一个二维数组。此处和MATLAB的二维数组(矩阵)的建立有很大差别。 同样,numpy中也有很多内置的特殊矩阵: b1=np.zeros((2,3)) #生成一个2行3列的全0矩阵。注意,参数是一个tuple:(2,3),所以有两个括号。完整的形式为:zeros(shape,dtype=)。相同的结构,有 ones() 建立全1矩阵。 empty(

python数据分析numpy库学习

半腔热情 提交于 2019-11-29 12:36:18
import numpy as np def asum(a_list,b_list,n1=2,n2=3): a = np.array(a_list) b = np.array(b_list) c = pow(a,n1) + pow(b,n2) return c a_lst = [1,2,3,4] b_lst = [2,3,4,5] print(asum(a_lst,b_lst)) #np.array()生成数据对象ndarray a = np.array([[1,2,3,4],[1,2,3,4]]) print(type(a)) #<class 'numpy.ndarray'> print(a) print(a.ndim)#轴数 print(a.shape) #(2,4)2行4列 print(a.size) #总元素数 print(a.itemsize) #元素大小 print(a.dtype) #int32,元素类型 print(np.arange(10)) print(np.ones((3,3),dtype=np.float32)) #生成三行三列都是1的矩阵 print(np.ones([4,3],dtype=np.int32)) #同上4行3列,列表类型参数也行 print(np.zeros((2,3))) #两行三列0 print(np.full((3,3),6))

python-数据分析模块numpy-pandas

爱⌒轻易说出口 提交于 2019-11-29 11:47:38
目录 numpy 模块 创建矩阵方法: 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 pandas模块 series (一维列表) DataFrame DataFrame属性 DataFrame取值 读取CSV文件 处理丢失数据 numpy 模块 numpy属于第三方库,需要下载安装。 numpy库有两个作用: 区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型; 计算速度快 创建矩阵方法: import numpy as np #np是约定俗称将numpy简写 np.array() # 创建矩阵 一维矩阵 一维矩阵就相当于列表 arr =np.array([1,2,3]) print(arr) [1 2 3] 二维矩阵 arr = np.array([[1,2,3],[1,2,3]]) print(arr) [[1 2 3] [1 2 3]] 三维矩阵 arr = np.array([[[1,2,3],[1,2,3]],[[1,2,3],[1,2,3]]]) print(arr) [[[1 2 3] [1 2 3]] [[1 2 3] [1 2 3]]] 获取矩阵的行列数 arr = np.array([[12,23,4],[12,3,4]]) print(arr) [[12 23 4] [12 3 4]] print