大数据理论课(第一节----Numpy的用法)

一、矩阵的规格、类型

import numpy as np       #导入矩阵模块并起别名
al=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]]) #利用矩阵方法创建一个数组
print("初始矩阵")
print(al)
print("初始的矩阵规格")
print(al.shape)      #展示当前矩阵规格
print("初始的矩阵的数据类型")
print(al.dtype)     #展示当前矩阵数据类型
x=al.reshape(2,6)   #将矩阵变成2行6列的形式,reshape无法改变原来的矩阵,只是返回一个变换后的结果
print("变换后的矩阵")
print(x)

在这里插入图片描述

注意:reshape用法
import numpy as np
al=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]])
x=al.reshape(2,6)     #改变矩阵的规格
print("al",al.shape)  #原矩阵
print("x",x.shape)    #改变后的矩阵

结果发现原矩阵没有改变
在这里插入图片描述

二、特殊矩阵的创建

import numpy as np
x=np.arange(0,100,2)    #功能:从0开始到100,但不包括100,以2为间隔的数增加的数集合的数组
print("等间隔数组为")
print(x)
print("等分数组为")
x2=np.linspace(0,1,5)   #功能:从0到1的五个等分点的数组(包括0和1)
print(x2)
print("等比数组为")
x3=np.logspace(0,2,5)   #功能:从10的0次方开始到10的2次方(包括连着),组成的5个数的等比数列的数组
print(x3)
print("对角线数组为")   #功能:创建一个4行4列的正方形矩阵
x4=np.diag([1,2,3,4])
print(x4)
print("0矩阵为")        #功能:创建一个4行5列的全0矩阵
x5=np.zeros((4,5))
print(x5) 
print('单位矩阵为')     #功能:创建一个5行3列的全1矩阵
x6=np.ones((5,3))
print(x6)

在这里插入图片描述

习题:如何求5-155之间的等比数列
import math
i=math.log(5,10)    #对应的每一个数取对数
j=math.log(155,10)
x4=np.logspace(i,j,10)   #logspace表示对应的数中前两个参数表示:计算的时候都是10的n次方形式,所以要取对数
print(x4)

在这里插入图片描述

补充:结构体的定义
df=np.dtype([("name",np.str_,40),("numitems",np.int64),("price",np.float64)])
items=np.array([("tomatoes",42,4.5),("egg",100,3.4)],dtype=df)
print(items)

三、矩阵中的随机数用法

1. 传统的随机数的使用

import random
print("产生0-100的任意随机整数,随机数为")
print(random.randint(0,100))
print("在x数组中挑选一个随机数,随机数为")
x=[3,4,5,6,900,23]
print(random.choice(x))
print("在改变x的数组顺序,改变后的数组为")
random.shuffle(x)
print(x)

在这里插入图片描述

2.numpy中的随机数用法

print("生成一个包含10个随机数正太分布的数组")
print(np.random.randn(10)) 
print("生成一个3行4列且在0-1之间均匀分布的随机数矩阵")
print(np.random.rand(3,4))  
print("生成在0-1之间含有100个数均匀分布的随机数数组")
print(np.random.random(100)) 

在这里插入图片描述

四、矩阵计算

1.矩阵内部求和计算

1. 一维矩阵的求和

x=np.random.randn(1000)   
s=0                       
for i in x:
    s+=i
print(s)

2.二维矩阵的求和

x=np.random.randn(1000)   
y=x.reshape(200,5)  #变换为二维矩阵
s=0
for i in y:       #遍历行
    for j in i:   #遍历列
        s=s+j
print(s)
2.矩阵之间的计算

1.一维矩阵

x=np.array([1,2,3])
y=np.array([10,20,30])
print("两数组之和")
print(x+y)
print("两数组之积")
print(x*y)

在这里插入图片描述

2.二维矩阵

m1=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
m2=np.matrix(np.ones((3,3)))
print("两矩阵之和")
print(m1+m2)
print("两矩阵之积")
print(m1*m2)
print("m1的逆矩阵")
print(m1.I)      #矩阵m1.I就表示m1的逆矩阵

在这里插入图片描述

3.一维和二维矩阵混杂求和

arr1=np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
print("矩阵1为")
print(arr1)
print("矩阵2为")
arr2=np.array([1,1,1])
print(arr2)
print("两矩阵之和")  #求和是一维数组和二维数组的每一行都要相加
print(arr1+arr2)

在这里插入图片描述

四.矩阵切片的使用

x=np.array([10,20,30,40,50,60])
y=np.array([[1,2,3],[4,5,6],[7,8,9]])
print("一维矩阵的切片")
print(x[2:5])       #表示取从x数组下标2一直到下标5数的切片(不包含5)
print("二维矩阵y为")
print(y)             
print("二维矩阵y的一次切片")
print(y[0:2])       #表示取从第0行开始一直到第2行的所有数的切片(不包括第2行)
print("二维矩阵y的二次切片")
print(y[0:2,0:2])   #表示先取0到2行(不包括第2行),再从中截取第0到第2列(不包括第2列)
print("挑选y数组第1行第1列的数为")
print(y[0][0])      
print("不连续挑选")
print(y[0,(0,2)])  #y[0,(0,2)]表示对挑选y矩阵的y[0][0]和y[0][2]

在这里插入图片描述

五、字符串和矩阵存放

1. 存放字符串

open("C:/test.txt",'w').write("asdfg")  #注意对应的引号是中文还是英文形式
open("C:/test.txt",'r').read()   

2. 单个矩阵的存放

arr1=[1,2,3,4,5]
np.save("c:/test1",arr1)  #存放矩阵到对应的路径
x=np.load("c:/test1.npy")  #单个矩阵读取时,读取文件要加后缀npy
print(x)

3. 多个矩阵的存放

arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
arr3=np.array([7,8,9])
np.savez("c:/test2",arr1,arr2,arr3)  #存放多个文件的格式
dat=np.load("c:/test2.npz")  #多个矩阵读取时,读取文件要加后缀npz
print("数组1为")
print(dat["arr_0"])  #按照存放dat["arr_0"]表示之前存放的第一个矩阵
print("数组2为")
print(dat["arr_1"])
print("数组3为")
print(dat["arr_2"])

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值