numpy的使用

#接上面
print(A.T) #转置
Y = matrix('5.0 7.0')
Y = Y.T
print(A*Y) #乘法
print(A.I) #逆矩阵
print(solve(A, Y)) #解线性方程

  

数组:

  numpy中提供了ndarry数组对象,该对象不但能方便地存储数组,而且拥有丰富的数组计算函数,比如向量的加法,减法,乘法等。

   创建数组。通过使用array()函数来定义数组实例对象,其参数为Python的序列对象(比如列表)。如果想定义多为数组,则传递多层嵌套的序列。如:

定义一个维维数组,其大小为(2,3),即共有两行,每行三列。

  

import numpy as np
a = np.array([1, 7, 0],[-2, 1, 2])

  形成的数组如下:

1 7 0
-2 1 2

  np.ndim 数组的维度数

  np.shape 数组的维数

  np.size 数组的总数

  np.dtype 数组元素的类型

  np.itemsize 数组元素中每个元素占有的字节大小

  np.data 数组元素的缓存区

import numpy as np

a = np.array([[1., 7., 0.], [-2., 1., 2.]])

print('维度数==>', a.ndim) #数组的维度数

print('维数==>', a.shape) #数组的维数

print('总数==>', a.size) #数组元素的总数

print('类型==>',a.dtype) #数组的类型

print('每个元素占有的字节大小==>', a.itemsize) #数组中每个元素占有的字节大小

print('缓存区==>', a.data) #数组元素的缓存区


#结果
#维度数==> 2
#维数==> (2, 3)
#总数==> 6
#类型==> float64
#每个元素占有的字节大小==> 8
#缓存区==> <memory at 0x0000000002151C88>

特殊数组:

  zeros数组: 全零数组,元素全为0,使用zeros函数创建

  ones数组: 全一数组,元素全为1,使用ones函数创建

  empty数组: 空数组,元素全近似为零,使用空数组的创建方法

序列数组:

  使用linspace函数创建等差序列数组,其参数分别为起始值,终止值,元素数量。

import numpy as np
order = np.linspace(0, 2, 9)

# 结果 [0.   0.25 0.5  0.75 1.   1.25 1.5  1.75 2.  ]

  

数组索引:

  Numpy数组的每个元素,每行元素,每列元素都可以使用索引访问,不过要注意索引是从0开始的。比如,某数组大小为(2,3),则每第2行第1列元素的索引是[1,0]。下面以三维数组位列,演示数组的创建,输出即索引。

  

from numpy import *
c = arange(24).reshape(2,3,4)
print(c)
''' [[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
'''
print(c[1,2,:])

# [20 21 22 23]

  

数组运算:

  数组的加减乘除以及乘法运算方式为,相应位置的元素分别进行计算。

  加法:array([20,31,42,53]) = array([20,30,40,50]) + array([0,1,2,3])

  减法:array([20,29,38,47]) = array([20,30,40,50]) - array([0,1,2,3])

     乘法:array([2,0],[0,4]) = array([[1,1],[0,1]]) * array([[2,0],[3,4]])

  乘方:array([0,1,2,3])的二次方 = array([0,1,4,9])

  除法:array([20,15,13.33333333.12.5]) = array([20,30,40,50])/array([1,2,3,4])

数组拷贝:

  数组的拷贝分为浅拷贝和深拷贝两种,浅拷贝通过数组变量的赋值完成,深拷贝使用欧冠数组对象的copy方法。

  浅拷贝只拷贝数组的引用,如果对拷贝进行修改,原数组也将修改。:

from numpy import *
a = ones((2,3))
b = a
b[1, 2] = 2
print(a)
print(b)

'''
[[1. 1. 1.]
 [1. 1. 2.]]
[[1. 1. 1.]
 [1. 1. 2.]]
'''

  

  深拷贝会复制一份和原数组一样的数组,新数组与原数组不会存放在用一个内存位置中,因此,对新数组的修改不会影响原数组。下面的代码演示了b使用copy方法从原数组a复制一份拷贝的情况。可以看到,修改b后,a仍然不变。

from numpy import *
a  = ones((2,3))
b = a.copy()
b[1,2] = 2
print(a)
print(b)

'''
[[1. 1. 1.]
 [1. 1. 1.]]
[[1. 1. 1.]
 [1. 1. 2.]]
'''

  

 矩阵;

  创建矩阵。Numpy的矩阵对象与数组对象相似,主要不同之处在于,矩阵对象的计算遵循矩阵数学运算规律。矩阵使用matrix函数创建,以(2,2)大小的矩阵(2行2列)为例,可用一下两种方式定义参数:

 

from numpy import *

A = matrix('1.0 2.0; 3.0 4.0')
print(A)

B = matrix([[1.0, 2.0],[3.0, 4.0]])
print(B)
'''
[[1. 2.]
 [3. 4.]]
[[1. 2.]
 [3. 4.]]

'''

 

    矩阵运算。矩阵的床用数学运算有转置,乘法,求逆等。

 

#接上面
print(A.T) #转置
Y = matrix('5.0 7.0')
Y = Y.T
print(A*Y) #乘法
print(A.I) #逆矩阵
print(np.linalg.solve(A, Y)) #解线性方程

  

 

posted @ 2020-03-14 14:56  King~~~  阅读(126)  评论(0编辑  收藏  举报