平台网站如何优化,太阳伞网络营销策划书,济南在线制作网站,手机版网站 html5文章一览 前言一、排序1.1 numpy.sort1.2 numpy.argsort1.3 numpy.lexsort 二、数组操作2.1 数组元素迭代2.2 数值舍入计算2.3数值取整2.4 数组去重2.5 数组拼接2.6 数组行列交换 三、文件读写3.1 np.fromfile() 读文件3.2 np.loadtxt() 读文件3.3 用 csv 模块逐行处理 CSV 格式… 文章一览 前言一、排序1.1 numpy.sort1.2 numpy.argsort1.3 numpy.lexsort 二、数组操作2.1 数组元素迭代2.2 数值舍入计算2.3数值取整2.4 数组去重2.5 数组拼接2.6 数组行列交换 三、文件读写3.1 np.fromfile() 读文件3.2 np.loadtxt() 读文件3.3 用 csv 模块逐行处理 CSV 格式数据3.4 读取结果生成一个字典3.5 如何将 array 保存到 txt 文件中 前言
NumPy是Python中用于数值计算和科学计算的库。它提供了排序、数组操作和文件读写等功能。可以通过NumPy进行数组排序、形状改变、数组拼接和分割等操作。同时还可以将数组保存为文本文件并从文本文件中读取数据创建数组。NumPy是进行数据处理和分析的重要工具。
一、排序
numpy提供了大量用数组操作的函数其中不乏常见的排序函数。
常见的有三种排序函数
numpy.sortnumpy.argsortnumpy.lexsort
1.1 numpy.sort
使用 numpy.sort 函数可以对数组进行排序并返回排序好的数组
使用方法 numpy.sort(a, axis 1, kind None, order None)
参数
a要排序的数组axis 按什么轴进行排序默认水平方向进行排序kind 排序方法默认是快速排序order 当数组定义了字段属性时可以按照某个属性进行排序
import numpy as np
x np.array([[90,85,95,80],[80,95,90,85],[170,170,185,165]])
x1 np.sort(x)
x2 np.sort(x,axis 0)1.2 numpy.argsort
numpy.argsort 函数用于将数组排序后返回数组元素从小到大依次排序的所有元素索引
使用方法 numpy.argsort(a, axis 1, kind None, order None)
a要排序的数组axis按什么轴进行排序默认按水平方向进行排序kind排序方法默认是快速排序order当数组定义了字段属性时可以按照某个属性进行排序
import numpy as np
x np.array([[5,8,3], [8,3,10]])
x1 np.argsort(x,axis 0)
x2 np.argsort(x,axis 1)1.3 numpy.lexsort
numpy.lexsort 函数用于按照多个条件键进行排序返回排序后索引
使用方法 numpy.lexsort(keys, axis -1)
keys(k,N)(k,N) 数组或序列元组要排序的 k 个不同的“列”。最后一列如果键是二维数组则为行是主排序键axis沿指定轴进行排序返回指定轴对键进行排序的索引数组
numpy.lexsort 应用场景高考录取学生按照总成绩排名录取。在总成绩相同时数学成绩高的优先录取在总成绩和数学成绩都相同时按照语文成绩录取……
# 默认为从小到大排import numpy as nps [590,585,570,585,570,570] # 总成绩m [90, 85, 60, 68, 65, 70] # 数学成绩
# Sort by sum, then by mathrank np.lexsort((m,s))
[2 4 5 3 1 0]二、数组操作
2.1 数组元素迭代
说到迭代很容易想到直接对数组直接使用 for 循环操作对于一维数组来说当然是可以的 import numpy as npx np.array([1,2,3,4])for i in x:print(i)
1
2
3
4import numpy as npx np.array([[1,2,3],[4,5,6]])for i in x:print(i)
[1 2 3]
[4 5 6]有没有办法直接遍历二维数组里每一个元素 import numpy as npx np.array([[1,2,3],[4,5,6]])for i in range(0,x.shape[0]):for j in range(0,x.shape[1]):print (x[i][j])
1
2
3
4
5
6双层循环效率低。这个时候就需要用到 flat 方法它可以将多维数组平铺为一维的迭代器 import numpy as npx np.array([[1,2,3],[4,5,6]])for i in x.flat:print(i)
1
2
3
4
5
62.2 数值舍入计算
around 函数用于四舍五入返回一个新数组 import numpy as npx np.array([1.4523,2.7348,3.1652])x np.around(x,2)
[1.45 2.73 3.17]2.3数值取整
floor 函数向下取整ceil 函数向上取整返回一个新数组 import numpy as npx np.array([1.45,2.78,3.12])x1 np.floor(x)
[1. 2. 3.]x2 np.ceil(x)
[2. 3. 4.]2.4 数组去重 import numpy as npx np.array([2,3,5,1,3,8,1,0])x1 np.unique(x)
[ 1 2 3 4 10]2.5 数组拼接
np.vstack按垂直方向行顺序堆叠数组构成一个新的数组
np.hstack按水平方向列顺序堆叠数组构成一个新的数组
注意它只能给一个参数所以要用括号括起来。 import numpy as npa np.array([2,5,7,8])b np.array([1,3,9,10])c np.vstack((a,b))
[[2 5 7 8][1 3 9 10]]import numpy as npa np.array([2,5,7,8])b np.array([1,3,9,10])c np.hstack((a,b))
[2 5 7 8 1 3 9 10]2.6 数组行列交换
数组水平或者垂直拼接很简单但拼接之前应注意什么
比如垂直拼接的时候每一列代表的意义必须相同如何交换某个数组的行或列呢 import numpy as npa np.arange(1,13).reshape(3,4)
[[ 1 2 3 4][ 5 6 7 8][ 9 10 11 12]]a[[1,2],:] a[[2,1],:]
[[ 1 2 3 4][ 9 10 11 12][ 5 6 7 8]] import numpy as npa np.arange(1,13).reshape(3,4)
[[ 1 2 3 4][ 5 6 7 8][ 9 10 11 12]]a[:,[0,2]] a[:,[2,0]]
[[ 3 2 1 4][ 7 6 5 8][11 10 9 12]]在多维数组索引中逗号用于分隔不同维度的索引。逗号后面的 : 表示对列维度的全选而前面的 [1,2] 指定了行索引。
a[[1,2],:] 则明确表示你想要的是第二行和第三行的所有列
a[:,[0, 2]]当表示需要第0列和第2列时逗号要放在前面。
三、文件读写
3.1 np.fromfile() 读文件
numpy 可以方便的进行文件读写。使用 np.fromfile 函数从文本或二进制文件读入数据
numpy.fromfile (file, dtype float, count -1, sep , offset 0)
file要读取的文件名dtype返回数组的数据类型count要阅读的项目数。 -1 表示所有项目即完整文件sep表示使用空白字符来分隔数据offset与文件当前位置的偏移量默认值为0。仅允许用于二进制文件
import numpy as np
d np.fromfile(housing.data, sep )空格或者回车都属于空白字符读入的数据被转化成 1 维数组
如果想把一维数组转换成二维或多维使用 reshape 即可
import numpy as np
d np.fromfile(housing.data, sep )
d1 d.reshape (-1,14)3.2 np.loadtxt() 读文件
通常使用 numpy 中的 loadtxt函数读取txt文件
fname要读取的文件comments如果行的开头为#就会跳过该行delimiter分隔符skiprows跳过前几行读取默认是0必须是int整型converters 字典类型对某列数据类型进行转换usecols要读取哪些列比如usecols (1,3)读取1和3列这里的列是从1开始编号unpack如果为True将分列读取ndmin指定生成数组的维度
import numpy as np
a np.loadtxt(test.txt)import numpy as np
a np.loadtxt(test.txt,comments#)import numpy as np
a np.loadtxt(test.txt,usecols [0,3])
print(a)取出数据以后再通过切片操作就可以进行分析、统计、可视化等处理了
3.3 用 csv 模块逐行处理 CSV 格式数据
csv.reader(fname, delimiter None) 返回一个 reader 对象利用该对象可以遍历csv文件中的行从 csv 文件中读取的每一行都以字符串列表的形式返回
import csv
with open (student.csv,r) as f:csv_r csv.reader(f)for row in csv_r:print(row)3.4 读取结果生成一个字典
读取结果生成一个字典dict用 csv.DictReader(files)
import csv
with open(student2.csv) as csvfile: data list(csv.DictReader(csvfile))
print (记录个数, len(data))
print (记录, data)
print (列名, list(data[0].keys()))读取了数据就可以进行数据处理了
3.5 如何将 array 保存到 txt 文件中
import numpy as np
arr np.array([1,5,3,4,10,0,9])
np.savetxt(ar.txt, arr,fmt%d,delimiter )
f np.loadtxt (ar.txt)
print(f)array_text.txt参数为文件路径以及 txt 文本名arr存入文件的数组名fmt‘%d’为指定保存的文件格式这里为十进制delimiter ’ 表示分隔符这里以空格的形式隔开