码迷,mamicode.com
首页 > 编程语言 > 详细

三、Numpy基础:数组元素查询、修改

时间:2018-01-13 23:43:33      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:方式   顺序   idt   child   定义   rand   根据   import   one   

一、索引

  • 取值的顺序是从外围到最里面的元素位置,依次写入。

1.1、单值索引

import numpy as np
a = np.arange(16).reshape(2,2,4)
print("原数组:\n",a)
print("单值索引值:\n",a[1][1][2])
>>>
原数组:
 [[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]
单值索引值:
 14

1.2、花式索引

  • 可以通过数组,数组中写明元素位置,来索引出多个需要的元素
import numpy as np
a=np.arange(25).reshape(5,5)#定义一个5*5的二维数组
print("原数组:\n",a)
print("花式索引多值(外层取行值):\n",a[[3, 3, 1, 4]])#注意这里一定传入的是数组格式
print("花式索引多值(二次取值,先行后列):\n",a[[0,2,2,4],[0,2,4,4]])#注意这里一定传入的是数组格式
>>>
原数组:
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
花式索引多值(外层取行值):
 [[15 16 17 18 19]
 [15 16 17 18 19]
 [ 5  6  7  8  9]
 [20 21 22 23 24]]
花式索引多值(外层取行值):
 [ 0 12 14 24]

1.3、布尔索引

  • 可以通过设置筛选条件生成布尔数组,在通过布尔数组反向索引出符合条件的结果
import numpy as np
a=np.random.random((4,4))#生成4×4的二维数组
b=a>0.5#生成以a>0.5为筛选条件的布尔数组
print(b)
print(a[b])#根据布尔数组将原值取出,变成一维数组
>>>
[[ True  True False False]
 [ True  True  True False]
 [ True  True  True  True]
 [ True False  True False]]
[0.72159895 0.85017348 0.88332226 0.7494597  0.8514071  0.91133411 0.89253366 0.80979503 0.61827433 0.94660476 0.67418788]

 1.4、索引器ix_()

  • 与花式索引相比,ix_()可以以轴为单位进行遍历,而非花式索引中的单点遍历
import numpy as np
a=np.arange(24).reshape(4,6)#生成4×4的二维数组
b=a[[1,3],[3,5]]#花式索引
c=a[np.ix_([1,3],[3,5])]#索引器
d=a[[1,3]][:,[3,5]]
print("原数组:\n",a)
print("花式索引:\n",b)
print("索引器索引:\n",c)
print("c等值于d:\n",d)
>>>
原数组:
 [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
花式索引:
 [ 9 23]
索引器索引:
 [[ 9 11]
 [21 23]]
c等值于d:
 [[ 9 11]
 [21 23]]

  

二、切片

  • numpy切片方式与python默认方式一致
  • 切片下来的内容与原数组共享同一片内存空间
import numpy as np
a = np.arange(16).reshape(2,2,4)
print("原数组:\n",a)
print("取一个值:\n",a[1][1][2])
print("切片范围取值:\n",a[1][1][2:4])
print("更大范围的切片遍历::\n",a[0][:][0:4])
>>>
原数组:
 [[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]
取一个值:
 14
切片范围取值: 
[14 15]  
更大范围的切片遍历:
[[0 1 2 3] [4 5 6 7]]

技术分享图片

 三、元素修改

  • 通过索引和切片得到的变量直接赋值即可修改 

 

三、Numpy基础:数组元素查询、修改

标签:方式   顺序   idt   child   定义   rand   根据   import   one   

原文地址:https://www.cnblogs.com/hezhefly/p/8279918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!