Numpy的认识

    一个用python实现的科学计算包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

    NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

基础

NumPy的主要对象是同构多维数组。它是一个元素表(通常是数字),都是相同类型的,由正整数元组索引。在NumPy中,维度称为轴线.

NumPy的数组类称为ndarray。它也是通过别名知道的。array。请注意numpy.array与标准Python库类不同array.array,它只处理一维数组,并提供较少的功能。的更重要的属性。

一 、数组的轴数(尺寸)。

ndarray.shape:  矩阵的大小

ndarray.size:  矩阵里元素的个数

type(ndarray): 矩阵的类型

 

import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)

[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]

print(a.shape)
(3, 5)
print(type(a))
<class 'numpy.ndarray'>

 

二、构建特定的矩阵:

1、单位矩阵:

np.ones(shape=(a,b,c),dtype=None,order='C')

返回给定形状和类型的新数组,填充 1 。

shape:代表数据形状,是个元组,如果shape=5代表创建一个五个元素的一维数组,shape=(3,4) 代表创建一个3*4的数组,即a*b表示数组,c表示几个元素

dtype:数据类型,可选,数组所需的数据类型,例如dtype='int'。默认是 float64。

order:{'C','F'},可选是否以内存中的C或Fortran连续(行或列)顺序存储多维数据。

import numpy as np
print(np.ones(shape = (2,1,3),dtype='int',order= 'C'))

[[[1 1 1]]

[[1 1 1]]]

2、零矩阵

np.zeros(shape =(a,b,c),dtype=None,order='C')

返回给定形状和类型的新数组,填充 0 。

print(np.zeros(shape = (2,1,3),dtype='int',order= 'C'))

[[[0 0 0]]

[[0 0 0]]]

3、对角矩阵p

np.eye(N,M = None,k = 0,dtype = <type'float'>,order ='C' )

N:int -- 输出中的行数。M:int,可选 -- 输出中的列数。如果无,默认为Ñ

k:int,可选 -- 对角线索引:0(默认值)是指主对角线,正值是指上对角线,而负值是指向下对角线。

import numpy as np
print(np.eye(3))

[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]

4、随机矩阵

print(np.empty((2,3)))

[[5.11798224e-307 3.44897992e-307 1.29060531e-306] [1.60218220e-306 1.24610927e-306 4.45064002e-308]]

5、0-1随机矩阵

print(np.random.rand(2, 2))

[[0.19656695 0.29067155] [0.52709383 0.46490215]]

6、范围矩阵

np.random.uniform(low=0.0, high=1.0, size=None)

生出size个符合均分布的浮点数,取值范围为[low, high),默认取值范围为[0, 1.0)

print(np.random.uniform(1, 2,size=(2,3)))

[[1.64545472 1.07505418 1.87356361] [1.98143839 1.6130207 1.80829523]]

三、创建数字序列

np.arange(start,end,step)

序列范围:[start(开始),end(结束))

print(np.arange(2,10,2))
[2 4 6 8]
print(np.arange(3,13,4))
[ 3  7 11]
四、基本运算
同纬度的矩阵才能运算

a = np.arange(4)a

array([0, 1, 2, 3])

b = np.array([4, 5, 6, 7])b

array([4, 5, 6, 7]) 

a+b
array([ 4,  6,  8, 10])
a-b
array([-4, -4, -4, -4])
a*b
array([ 0,  5, 12, 21])
a/b
array([0.        , 0.2       , 0.33333333, 0.42857143])
a**2
array([0, 1, 4, 9], dtype=int32)
五、切片

c = np.arange(10)c

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c[1:6]
array([1, 2, 3, 4, 5])
c[1:6:2]
array([1, 3, 5])
c[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])