Numpy笔记5

##numpy笔记5

#排序
numpy.sort()

numpy.sort(a, axis, kind, order)
#a 要排序的数组
#axis 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序
#kind 默认为’quicksort’(快速排序)
#order 如果数组包含字段,则是要排序的字段

a = np.array([[3,7],[9,1]])
print(‘我们的数组是:’)
print(a)

print(‘调用 sort() 函数:’)
print(np.sort(a))

print(‘沿轴 0 排序:’)
print(np.sort(a, axis = 0))

#在 sort 函数中排序字段
dt = np.dtype([(‘name’, ‘S10’),(‘age’, int)])
a = np.array([(“raju”,21),(“anil”,25),(“ravi”, 17), (“amar”,27)], dtype = dt)
print(‘我们的数组是:’)
print(a)

print(‘按 name 排序:’)
print(np.sort(a, order = ‘name’))

#输出
#我们的数组是:
#[[3 7]
#[9 1]]

#调用 sort() 函数:
#[[3 7]
#[1 9]]

#沿轴 0 排序:
#[[3 1]
#[9 7]]

#我们的数组是:
#[(‘raju’, 21) (‘anil’, 25) (‘ravi’, 17) (‘amar’, 27)]

#按 name 排序:
#[(‘amar’, 27) (‘anil’, 25) (‘raju’, 21) (‘ravi’, 17)]

numpy.argsort()
#函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。 这个索引数组用于构造排序后的数组

x = np.array([3, 1, 2])
print(‘我们的数组是:’)
print(x)

print(‘对 x 调用 argsort() 函数:’)
y = np.argsort(x)
print(y)

print(‘以排序后的顺序重构原数组:’)
print(x[y])

print(‘使用循环重构原数组:’)
for i in y:
print(x[i])

#输出
#我们的数组是:
#[3 1 2]

#对 x 调用 argsort() 函数:
#[1 2 0]

#以排序后的顺序重构原数组:
#[1 2 3]

#使用循环重构原数组:
#1 2 3

#numpy.extract()

#函数返回满足任何条件的元素

x = np.arange(9.).reshape(3, 3)
print(‘我们的数组是:’)
print(x)
#定义条件
condition = np.mod(x,2) == 0
print(‘按元素的条件值:’)
print(condition)
print(‘使用条件提取元素:’)
print(np.extract(condition, x))

#我们的数组是:
#[[ 0. 1. 2.]
#[ 3. 4. 5.]
#[ 6. 7. 8.]]

#按元素的条件值:
#[[ True False True]
#[False True False]
#[ True False True]]

#使用条件提取元素:
#[ 0. 2. 4. 6. 8.]

#副本和视图

#无复制
#简单的赋值不会创建数组对象的副本
#一个数组的任何变化都反映在另一个数组上。 例如,一个数组的形状改变也会改变另一个数组的形状

a = np.arange(6)
print(‘我们的数组是:’)
print(a)
print(‘调用 id() 函数:’)
print(id(a))
print(‘a 赋值给 b:’)
b = a
print(b)
print(‘b 拥有相同 id():’)
print(id(b))
print(‘修改 b 的形状:’)
b.shape = 3,2
print(b)
print(‘a 的形状也修改了:’)
print(a)

#输出
#我们的数组是:
#[0 1 2 3 4 5]

#调用 id() 函数:
#139747815479536

#a 赋值给 b:
#[0 1 2 3 4 5]
#b 拥有相同 id():
#139747815479536

#修改 b 的形状:
#[[0 1]
#[2 3]
#[4 5]]

#a 的形状也修改了:
#[[0 1]
#[2 3]
#[4 5]]

#视图或浅复制

ndarray.view()
#它是一个新的数组对象,并可查看原始数组的相同数据。 与前一种情况不同,新数组的维数更改不会更改原始数据的维数

b = a.view()

#数组的切片也会创建视图
a = np.array([[10,10], [2,3], [4,5]])
print(‘我们的数组:’)
print(a)
print(‘创建切片:’)
s = a[:, :2]
print(s)

#输出
#我们的数组:
#[[10 10]
#[ 2 3]
#[ 4 5]]

#创建切片:
#[[10 10]
#[ 2 3]
#[ 4 5]]

#深复制

ndarray.copy()
#函数创建一个深层副本。 它是数组及其数据的完整副本,不与原始数组共享

b = a.copy()

#矩阵库
#numpy.matlib,此模块的函数返回矩阵而不是返回ndarray对象

#线性代数
#numpy.linalg模块,提供线性代数所需的所有功能

IO
#load()和save()函数处理 numPy 二进制文件(带npy扩展名)
b = np.load(‘outfile.npy’)
a = np.array([1,2,3,4,5])
np.save(‘outfile’,a)

#loadtxt()和savetxt()函数处理正常的文本文件
a = np.array([1,2,3,4,5])
np.savetxt(‘out.txt’,a)
b = np.loadtxt(‘out.txt’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值