Python学习之Numpy基础(四)

一:复制

1.id相同,所指向数据块相同,仅名称不同(一个人有大名、有小名、有外号,但是都是这个人)

a = numpy.arange(12)
b = a
print(b is a)
b.shape = 3,4
print(a.shape)
print(id(a))
print(id(b))

打印结果:

True
(3, 4)
2563571342752
2563571342752


2.id不同,所指向数据块相同(双胞胎,基因相同,但是是两个人)

进一步理解:

a和c的id不同,说明a和c指向不同的东西,但是a和c公用同一块数据源,修改其中一个的值另一个也会改变

c = a.view()
print(c is a)
c.shape = 2, 6
print(a.shape)
c[0, 4] = 1234
print(a)
print(id(a))
print(id(c))

打印结果:

False
(3, 4)
[[   0    1    2    3]
 [1234    5    6    7]
 [   8    9   10   11]]
2270379466144

2270377903808


3.id不同,数据块不同,名字不同,但是数据相同(复印文件)

d = a.copy()
print(d is a)
d[0, 0] = 99
print(d)
print(a)

打印结果:

False
[[  99    1    2    3]
 [1234    5    6    7]
 [   8    9   10   11]]
[[   0    1    2    3]
 [1234    5    6    7]

 [   8    9   10   11]]


二:索引

1.找一个矩阵中,最大值所在的位置

numpy.argmax(axis=0或1)

numpy.shape的用法

data = numpy.sin(numpy.arange(20)).reshape(5, 4)
print(data)
ind = data.argmax(axis=0)  #返回每列或每行的最大值的索引
print(ind)
data_max = data[ind, range(data.shape[1])]
print(data_max)

打印结果:

[[ 0.          0.84147098  0.90929743  0.14112001]
 [-0.7568025  -0.95892427 -0.2794155   0.6569866 ]
 [ 0.98935825  0.41211849 -0.54402111 -0.99999021]
 [-0.53657292  0.42016704  0.99060736  0.65028784]
 [-0.28790332 -0.96139749 -0.75098725  0.14987721]]
[2 0 3 1]
[ 0.98935825  0.84147098  0.99060736  0.6569866 ]


二:单个矩阵内的复制

numpy.tile(要复制的矩阵,(复制的份数))

a = numpy.arange(0, 40, 10)
print(a)
b = numpy.tile(a, (3, 5))
print(b)

打印结果:

[ 0 10 20 30]
[[ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]

 [ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]]


三:排序

1.sort

a = numpy.array([[4, 3, 5], [1, 2, 1]])
print(a)
print("-----")
b = numpy.sort(a, axis=1)
print(b)

打印结果:

[[4 3 5]
 [1 2 1]]
-----
[[3 4 5]

 [1 1 2]]


2.argsort

a = numpy.array([4, 3, 1, 2])
j = numpy.argsort(a) #数据从小到大排序的索引
print(j)
print("-----")
print(a[j])

打印结果:

[2 3 1 0]
-----
[1 2 3 4]


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值