Python 人工智能应用快速入门(四)Numpy(2)

上次numpy的第一次分享,涉及了numpy矩阵的构建,一维二维的,矩阵的size,取元素,特殊矩阵的构建,slicing操作,list的comprehension,整数索引,布尔索引,等等。今天一起来看一下numpy的第二次分析,包括,numpy矩阵元素的数据类型,元素的计算,特殊方法的构建矩阵,等等。下面的分享参考python, scipy, 和斯坦福大学的python 教程。

在上次的学习中,我们创造了一个np.array,其中包含浮点数,而使用print (type(array))可以查看该数组的类型。

import numpy as np

a = np.zeros((1))   #创造一个0向量,只包含一个0,用小括号,zero加s

print(a)            # [0]

print(type(a),type(a[0]))   # 0默认是64位的float类型的

b = np.array([1,2.5,3,4]) # 包含一个浮点型,默认float64 类型

c = np.array([1,2,3,4])# i默认int32

当一个矩阵中包含浮点型,那么整个数组的data type就默认是 folat 64,并且每个元素都是。

除了默认的类型之外,可以创造给定的类型,整数类型包括,int 8, 16, 32,

64, 浮点型的包含float 16, 32, 64. 具体的更多案例,就参考官网的链接:参考链接:https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

Numpy的出现让我们操作矩阵和运算变的很方便,所以矩阵的运算就变得很重要。矩阵对于运算符号的操作是元素类的操作。

比如加法运算:就是同一个size的矩阵,对应元素的相加。减法,乘法和除法也类似。

a4 = a1 - a2 # list类型不支持 list - list 操作,也不支持除法,乘法操作。

print (a4,np.subtract(a1,a2)) # 可以利用np.subtract

print (a1/a2,np.divide(a1,a2)) # np.devide

矩阵除了元素的运算外,其实更多的是矩阵的乘法,取均值,标准差和标准化等等一系列操作。

d = np.array([[1,2],[1,2],[1,2]])

print (b.dot(d),np.dot(b,d)) # 3*2 的矩阵和2*3的矩阵相乘,得到2*2的矩阵

# i_STEM,一维的向量相乘,

v1 = np.array([1,2,3])#

v2 = np.array([1,2,3])#

print (v1.dot(v2)) # 14,两个向量的相乘是一个值。

元素取和操作:

v = np.array([[1,2,3],[4,5,6]])

print (np.sum(v)) # 21

print (np.sum(v,axis = 0))# [5,7,9],每一列的和

print (np.sum(v,axis = 1))# [6,15],每一行的和

print ((v-np.mean(v,axis =

0))/np.std(v,axis = 0)) # 按列标准化之后,新的矩阵每一列

# 均值为0,标准差是1,按列标准化是比较常用的一个操作,实际中每一行经常是一条数据,

其他操作还有转置操作等等。其他的更多操作参考:

https://docs.scipy.org/doc/numpy/reference/routines.math.html

很多有用的操作,比如给一个二维的矩阵每一行都加上一个向量,得到一个新的矩阵。

b = np.array([3,4])

bs = np.tile(b,(2,3))# 原来1行两列,2*3的堆叠后,变成(1*2)*(2*3)的大小

# tile本身有砖块的意思,就是堆叠的引申意义

[[3 4 3 4 3 4]

 [3 43 4 3 4]]

更多numpy的常用用法,可以参考官网查看了:https://docs.scipy.org/doc/numpy/reference/

好,下次跟大家分享scipy 的用法,这是处理图像时候常用的,比如做医学图像处理等等。

你可能感兴趣的:(Python 人工智能应用快速入门(四)Numpy(2))