ch2 科学计算库Numpy3

本节主要介绍Numpy中的复制操作、最值、排序。

1复制

1.1简单复制

a = np.arrange(12)
b = a
#a and b are two names for the same ndarray objects
print (b is a)
#True
b.shape = 3,4
print(a.shape)
#(3,4)
  1. b = a为简单赋值,本质上只是将b指向了a所创建的对象,没有进行任何的复制操作
  2. 因此,无论是对两者其中任意一个进行操作,最终两者都会发生改变

1.2浅复制

c = a.view()
#True
print (c is a)

#[[0 1 2 3 4 5],[6 7 8 9 10 11]]
c.shape = 2,6
#(3,4)
print(a.shape)

c[0,4] = 1234
#[
#[0 1 2 3],
#[1234 5 6 7],
#[8 9 10 11]
#]
print (a)
  1. c = a.view() 完成了浅复制操作,使其指向了不同的对象,但却共用同一份值
  2. 由于指向了不同的对象,因此改变c的形状并不会影响a的形状
  3. 但由于共用同一份值,因此改变c的值会影响到a的值

1.3深复制

d = a.copy()

此为深复制,可以理解为一种初始化的手段,自此之后,两者再无任何关系

2 寻找每行/列最大值

import numpy as np
data = np.sin(np.arrange(20)).reshape(5,4)

#求每一列最大值所对应的索引  相当于拿到了每一列最大值所在的行数
ind = data.argmax(axis = 0)
#取到每一列最大的数据
data_max = data[ind, range(data.shape[1])]

3.扩展

a = np.arrange(0,40,10)
#[0 10 20 30]

b = np.tile(a,(2,2))
#[[0 10 20 30 0 10 20 30],[0 10 20 30 0 10 20 30]]

4.排序

a = np.array([[4,3,5],[1,2,1]])
#按行排序
b = np.sort(a,axis=1)

a = np.array([4,3,1,2])
#拿到了从小到大索引值的排序
j = np.argsort(a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值