0
点赞
收藏
分享

微信扫一扫

python基础示例 - NumPy库的使用

月孛星君 2022-05-05 阅读 65
python

例10-1:创建数组并查看数组属性。

import numpy as np                                            # 导入Numpy库
arr1 = np.array([1, 2, 3, 4])                                 # 创建的一维数组,参数为列表
print('数组的尺寸:',np.shape(arr1))             # (4, )  ,  一个元素的元组,表示是一维数组
arr2 = np.array([[1,2,3,4],[4,5,6,7], [7,8,9,10]])   # 创建二维数组
print('数组的尺寸:',np.shape(arr2))                #  2个元素的元组:  (3, 4)
arr2.shape[0]                                                         # 返回二维数组的行数:3
arr2.shape[1]                                                        # 返回二维数组的列数:4

         其中 (4,) 代表一维数组,元素有四个;(3, 4) 代表二维数组,三行四列。

例10-2  绘制:随机生成10000数据,服从均值为0、方差为1的正态分布的直方图(间隔个数:50)。

import numpy as np
import matplotlib.pyplot as plt                # 引入matplotlib 下的子库pyplot,用于绘图
np.random.seed(0)
data = np.random.normal(0,1,10000)      # 生成10000个,均值为0,方差为1的高斯分布数据
print(min(data),max(data))                      # 最小数、最大数
n, bins, patches = plt.hist(data,50,facecolor='green',edgecolor='white')          # 直方图函数
plt.grid(True)                                             # 设置显示网格
plt.show()                                                     # 显示绘图

 例10-4  数组、矩阵之间的线性代数运算。

import numpy as np
x = np.array([[1,2,3],[0,1,-1],[1,0,0]])       #  x 为二维数组:形状为 (3,3)
print(np.linalg.det(x))                                # x 对应矩阵的行列式,输出:-5
y = np.linalg.inv(x)               # x 对应矩阵的逆(AB=BA=E),此时的 y 为二维数组:形状为 (3,3)
a = np.dot(x,y)                      # 数组 x 与 y 做点积运算,等价于两个矩阵相乘
b = np.mat(x)*np.mat(y)    #  将数组 x 与 y 转为矩阵,再做矩阵乘法,等价于 np.dot(x,y)
c = x * y                              # 数组x与y相乘,即两个数组对应元素相乘,注意:不同于np.dot(x,y)
print(a==b)                          # 完全相同,全为True
d = np.linalg.eigvals(x)       # x 对应矩阵的特征值,返回的 d 为列表
print(d)                                 # [-1.51154714+0.j  1.75577357+0.47447678j  1.75577357-0.47447678j ]
e = np.linalg.eig(x)               #  x 对应矩阵的特征值及特征向量,返回的 e 为元组
print(e[0],e[1])                     #  e[0]为 x 的特征值,e[1]为 x 的特征向量

 例10-5文件“历年总人口.xls”、“历年新生人口和死亡人口.xls”,收录了我国部分地区1949年至2019年,历年的总人口、出生人口及死亡人口。编写程序,将这3个列数据,及对应的年份读取出来,保存在文件“历年总人口、新生人口和死亡人口.csv”中。

历年总人口.xls 

 历年新生人口和死亡人口.xls

import numpy as np
import xlrd
wb = xlrd.open_workbook(r"C:\pythonFiles\pythonProject\教材各章数据\教材各章数据\第10章数据\历年总人口.xls")
sheet = wb.sheet_by_index(0)                      # 通过索引号0获取整个sheet数据
col_0 = sheet.col_values(0)                           # 第0列数据,返回一个列表:年度
col_1 = sheet.col_values(1)                           # 第1列数据,返回一个列表:总人口
year = col_0[1:]                                              # 年份:从第1个元素开始,到最后一个元素
total= col_1[1:]                                              # 总人口:从第1个元素开始,到最后一个元素
year = [int(c) for c in year]                           # 用列表推导式,把每个元素转为整数
total = [int(c) for c in total]                          # 用列表推导式,把每个元素转为整数
wb = xlrd.open_workbook(r"C:\pythonFiles\pythonProject\教材各章数据\教材各章数据\第10章数据\历年新生人口和死亡人口.xls")
sheet = wb.sheet_by_index(0)                 # 通过索引号0获取整个sheet数据
col_1 = sheet.col_values(1)                  # 通过列索引号1获取列内容:出生人口
col_2 = sheet.col_values(2)                  # 通过列索引号2获取列内容:死亡人口
add = col_1[1:]                            # 出生人口:从第1个元素开始,到最后一个元素
die = col_2[1:]                            # 死亡人口:从第1个元素开始,到最后一个元素
add = [int(c[0:-1]) for c in add]               # 用列表推导式,把最后一个‘万’字去掉
die = [int(c[0:-1]) for c in die]               # 用列表推导式,把最后一个‘万’字去掉
y = np.array(add)-np.array(die)              # 将两个列表变成数组相减,生成每年净增人口
m = len(year)
arr = np.array(year).reshape(m,1)            # 将年份的列表转为数组,形状调整为:(m,1)
arr = np.insert(arr,1,values=total,axis=1)              # 在第1列后面插入1列
arr = np.insert(arr,2,values=add,axis=1)              # 在第2列后面插入1列
arr = np.insert(arr,3,values=die,axis=1)              # 在第3列后面插入1列
arr = np.insert(arr,4,values=y,axis=1)               # 在第4列后面插入1列
file='大陆历年总人口、新生人口和死亡人口.csv'
np.savetxt(file,arr,fmt='%i',delimiter=',',comments='',header='年份,总人口,出生人口,死亡人口,净增人口')
x = np.loadtxt(file,dtype=np.int,delimiter=',',skiprows=1)
print(x) 

 

例10-6 读《testSet.txt》文件。testSet.txt 是机器学习中的一个经典数据集,共100行、3列,里面包含了对二维随机变量(x,y)的100次观察数据,这些样本数据被分成了两类:0或1。

 

import numpy as np
f = np.loadtxt(r'C:\pythonFiles\pythonProject\教材各章数据\教材各章数据\第10章数据\testSet.txt')                              # 打开文本文件
print('返回的二维数组f的形状:',np.shape(f))
print(f)

举报

相关推荐

0 条评论