人工智能基础学习(一)——numpy数据库

1,矩阵大小与矩阵元素类型查看:

vector = numpy.array([1,2,3,4])          #创建一个向量

matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])      #创造一个3×3矩阵

print(vector.shape)     #向量或矩阵大小

print(matrix.shape)

print(vector.dtype)     #数据类型(numpy中的数据类型保持一致)

print(matrix.dtype)

注意: numpy中的数据类型保持一致,当不一样时会自动转换其中的类型变为一致

(2)矩阵元素的切片操作:

 

pixel = matrix[1,1]         #单个元素查找
print(pixel)
line1 = matrix[1,:]        #查找某一行元素
print(line1)
col1 = matrix[:,1]          #查找某一列元素
print(col1)
rowcol = matrix[0:2,1:2]    #截取矩阵某一部分
print(rowcol)

  numpy的元素判断操作:

equal_to_ten = (matrix[:,1] == 10)    #判断10是否在matrix的第一列中,返回值为Bool型
print(equal_to_ten)
print(matrix[equal_to_ten,:])            #利用得到的判断进行元素索引

3,numpy类型转换:

vector = ['1','2','3','4']
vector = vector.astype(float)      #数据类型转化
print(vector.dtype)
print(vector)

4,numpy矩阵运算

vector = numpy.array[1,2,3,4]      #求最小值
print(vector.min())
matrix = numpy.array([[5,10,15],[20,25.30],[35,40,45]])
matrix.sum(axis = 1)       #求矩阵行的总和,若等于0,则对列进行求和
b = matrix*matrix            #两个矩阵的对应元素相乘
c = np.dot(matrix,b)        #执行两个矩阵相乘

5,numpy中常用的函数

import numpy as np
vector = np.arange(15)            #产生0到14得数
np.arange(10,30,5)                #10是初始数,30是结尾,左闭右开,5为步长
a = np.arange(15).reshape((3,5))    #产生0到14,并将其化为3×5的矩阵
b = np.zeros(3,4)            #创建一个3×4的矩阵,元素全为0
c = np.ones(3,4)             #创建一个全为1的矩阵
np.random.random((3,4))        #调用random中的random模块产生一个3×4的随机矩阵
np.linspace(0,2*pi,100)        #在0到2*pi间均匀取100个数
a.ndim                        #得到a的维度

6,矩阵的常用操作

import numpy as np
b = np.arange(3)
print(b)
print(np.exp(b))            #求矩阵内元素的e次幂
print(np.sqrt(b))            #求矩阵内元素的开方
a= np.floor(10*np.random.random((3,4)))        #对通过随机产生数进行向下取整
a.ravel()                    #将矩阵变为向量
a.shape = (2,6)            #将a变为2×6
print(a.T)            #求到a的转置
#矩阵拼接
c = np.floor(10*np.random.random((3,4)))
d = np.hstack(a,c)        #将两个矩阵进行横向拼接
e = np.vstack(a,c)        #将两个矩阵进行纵向拼接
f = np.hsplit(d,2)        #将矩阵d横向切分为两份,若第二个参数传入元组,则进行指定切分
g = np.vsplit(e,2)        #将矩阵e纵向切分为两份

7,不同复制操作对比

import numpy as np
a = np.arange(12)
#深复制:具有相同的id和值
b = a                #将a赋予b,深复制,a与bid相同,指向同一地方
b.shape = (3,4)    
print(a.shape)        #a的shape也变成3,4
print(id(a))
print(id(b))            #a与b的id值相同
#浅复制,具有相同的值,但id不同
c = a.view()            #对a进行浅复制,为c重新创造一个id,通过这种方式的复制两个矩阵具有相同的值
c.shape = (2,6)
c[0,4] = 1234
print(a)                #c[0,4] = 1234赋予a中
print(a.shape)            #a的shape并未随着c变化
print(id(a))
print(id(c))                a与c具有不同的id
#复制双方具有不同的值和id
d = a.copy()            #将d任意改变也不会影响a

8,矩阵内的排序与索引

#索引
import numpy as np
data = np.sin(np.arange(20).reshape(5,4))
ind = data.argmax(axis = 0)        #所以矩阵列上最大值的索引,若axis=1则为行
datamax = data[ind,range(data.shape[1])]    #列出每一列的最大值
a = np.range(0,40,10)
b = np.tile(a,(3,4))        #对a进行3×4的扩展
#排序
a = np.array([[4,3,5],[1,2,1]])
b = np.sort(a,axis = 1)            #对a矩阵的行进行从小到大排序
c = np.array([4,3,1,2])
d = np.argsort(c)                    #对a矩阵进行从小到大的排序,输出为其索引值

猜你喜欢

转载自blog.csdn.net/jihui1284/article/details/81133782
今日推荐