1.一维数组的索引及切片

ar = np.arange(20)
print(ar)
print(ar[4])
print(ar[3:6])
print(ar[:4:2]) #索引到4 按2的步长
print('-----')

输出结果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
4
[3 4 5]
[0 2]
-----

2. 二维数组的索引及切片

ar = np.arange(16).reshape(4,4)
print(ar, '数组轴数为%i' %ar.ndim) # 4*4的数组
print(ar[2], '数组轴数为%i' %ar[2].ndim) # 切片为下一维度的一个元素,所以是一维数组
print(ar[2][1]) # 二次索引,得到一维数组中的一个值
print(ar[1:3], '数组轴数为%i' %ar[1:3].ndim) # 切片为两个一维数组组成的二维数组
print(ar[2,2]) # 切片数组中的第三行第三列 → 10
print(ar[:2,1:]) # 切片数组中的1,2行、2,3,4列 → 二维数组
print('-----')

输出结果:

[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]] 数组轴数为2
[ 8 9 10 11] 数组轴数为1
9
[[ 4 5 6 7]
[ 8 9 10 11]] 数组轴数为2
10
[[1 2 3]
[5 6 7]]
-----

3.三维数组的索引及切片

ar = np.arange(8).reshape(2,2,2)
print(ar, '数组轴数为%i' %ar.ndim) # 2*2*2的数组
print('\n')
print(ar[0], '数组轴数为%i' %ar[0].ndim) # 三维数组的下一个维度的第一个元素 → 一个二维数组
print(ar[0][0], '数组轴数为%i' %ar[0][0].ndim) # 三维数组的下一个维度的第一个元素下的第一个元素 → 一个一维数组
print(ar[0][0][1], '数组轴数为%i' %ar[0][0][1].ndim)

输出结果:

[[[0 1]
[2 3]] [[4 5]
[6 7]]] 数组轴数为3 [[0 1]
[2 3]] 数组轴数为2
[0 1] 数组轴数为1
1 数组轴数为0

4. 布尔型索引及切片

# 布尔型索引及切片

ar = np.arange(12).reshape(3,4)
i = np.array([True,False,True])
j = np.array([True,True,False,False])
print(ar)
print(i)
print(j)
print(ar[i,:]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i,:] = ar[i](简单书写格式)
print(ar[:,j]) # 在第二维度做判断,这里如果ar[:,i]会有警告,因为i是3个元素,而ar在列上有4个
# 布尔型索引:以布尔型的矩阵去做筛选 m = ar > 5
print(m) # 这里m是一个判断矩阵
print(ar[m]) # 用m判断矩阵去筛选ar数组中>5的元素 → 重点!后面的pandas判断方式原理就来自此处

输出结果:

[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]]
[ True False True]
[ True True False False]
[[ 0 1 2 3]
[ 8 9 10 11]]
[[0 1]
[4 5]
[8 9]]
[[False False False False]
[False False True True]
[ True True True True]]
[ 6 7 8 9 10 11]

5.数组索引及切片的值更改、复制

ar = np.arange(10)
print(ar)
ar[5] = 100
ar[7:9] = 200
print(ar)
# 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组 ar = np.arange(10)
b = ar.copy()
b[7:9] = 200
print(ar)
print(b)
# 复制

输出结果:

[0 1 2 3 4 5 6 7 8 9]
[ 0 1 2 3 4 100 6 200 200 9]
[0 1 2 3 4 5 6 7 8 9]
[ 0 1 2 3 4 5 6 200 200 9]

最新文章

  1. AppleScript的字典怎么看怎么用
  2. LeetCode1:Two Sum
  3. tengine安装
  4. centos6.3安装nginx
  5. jQuery中的bind绑定事件与文本框改变事件的临时解决方法
  6. velocity 随笔
  7. TCP/IP详解学习笔记(2)-数据链路层
  8. java遍历泛型的方法
  9. 2017年Unity开发环境与插件配置安装(总体介绍)
  10. Android RecyclerView 滚动到中间位置
  11. 单机多es容器服务部署的网络模式
  12. Mysql性能优化二:索引优化
  13. Java中的运算符及表达式
  14. 1100C NN and the Optical Illusion
  15. react组件的数据传递
  16. U转串口驱动安装
  17. EXTJS 4:在renderer中如何控制一个CheckColumn的行为,如显示,只读等属性
  18. Web开发者工具下载
  19. iPhone越狱cydia源大全
  20. 使用HVTableView动态展开tableView中的cell

热门文章

  1. 什么是MongoDb
  2. sass文件转css时注释虽然支持中文,但是出现乱码的解决方法
  3. node安装express时找不到pakage.json文件;判断安装成功?
  4. table表格td内内容自动换行
  5. canvas制作倒计时效果
  6. SpringCloud的学习记录(4)
  7. Azure本月最新活动,速度Mark!
  8. [转]Android解析json数据
  9. Markdown快速上手指南
  10. 用户表单事件(focus事件)