5、numpy——切片和索引
1、一维数组
1.1 一维数组很简单,基本和列表一致。ndarray 数组可以基于 0 - n 的下标进行索引。
切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
通过冒号分隔切片参数 start:stop:step 来进行切片操作:
import numpy as np
arr = np.arange(10) #类似于list的range()
# 通过内置函数slice切片
s = slice(2, 10, 2)
print(arr[s])
# 通过冒号切片参数直接切片
print(arr[2:10:2])
结果:
[2 4 6 8]
[2 4 6 8]
2.2 冒号 : 的解释:
如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[5]
5
>>> a[5:]
array([5, 6, 7, 8, 9])
>>> a[2:6]
array([2, 3, 4, 5])
>>>
2.3 列表切片与数组ndarray切片的区别
区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改)。这也意味着,如果不想更改原始数组,我们需要进行显式的复制,从而得到它的副本(.copy())。
import numpy as np
arr_old = arr.copy()
arr[0:6] = 2
print('arr={}\narr_old={}'.format(arr,arr_old))
结果:
arr=[2 2 2 2 2 2 6 7 8 9]
arr_old=[0 1 2 3 4 5 6 7 8 9]
2、二维数组
二维数组中,各索引位置上的元素不再是标量,而是一维数组
import numpy as np
arr = np.array([[1, 2, 2], [4, 5, 6], [7, 8, 9]])
print(arr, '\n', arr[1][2])
结果:
[[1 2 2]
[4 5 6]
[7 8 9]]
6
咱们当做一个平面直角坐标系。
相当于arr1[x,y],x相当于行数,y相当于列数(必须声明,图中x和y标反了,但不影响理解)。
3、多维数组
先说明下reshape()更改形状:
np.reshape(a,newshape,order='C')
a:array_like以一个数组为参数。
newshape:intortupleofints。整数或者元组
顺便说明下,np.reshape()不更改原数组形状(会生成一个副本)。
import numpy as np
arr1 = np.arange(1, 13)
arr2 = arr1.reshape(2, 2, 3)
print(arr1, arr2)
结果:
[ 1 2 3 4 5 6 7 8 9 10 11 12] [[[ 1 2 3]
[ 4 5 6]] [[ 7 8 9]
[10 11 12]]]
其实多维数组就相当于:
row * col * 列中列
import numpy as np
arr1 = np.arange(1, 13)
arr2 = arr1.reshape(2, 2, 3)
print(arr2[1][1])
print(arr2[1][1][0])
结果:
[10 11 12]
10
5、numpy——切片和索引的更多相关文章
- NumPy 切片和索引
NumPy 切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样. ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以 ...
- NumPy切片和索引
NumPy - 切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样. 如前所述,ndarray对象中的元素遵循基于零的索引. 有三种可用的索引方 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 切片和索引
ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组. import ...
- numpy数组的索引和切片
numpy数组的索引和切片 基本切片操作 >>> import numpy as np >>> arr=np.arange(10) >>> arr ...
- Numpy | 09 高级索引
NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 实例1:获取数组中(0,0),(1,1)和( ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- numpy切片和布尔型索引
numpy 标签(空格分隔): numpy 数据挖掘 切片 数组切片是原始数组的视图.这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上 In [16]: arr Out[16]: arr ...
- Numpy | 08 切片和索引
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样. (1)ndarray 数组索引可以基于 0 - n 的下标进行: (2)切片对象可以通过内置的 ...
- 【NumPy学习指南】day4 多维数组的切片和索引
ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1) 举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组 ...
随机推荐
- webstorm 2019 去掉编辑器右侧白线
第一步:打开设置 第二步: 第三部:apply 关闭设置
- 2018-11-01-weekly
Algorithm 107. 二叉树的层次遍历 II What 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历).例如:给定二叉树 [3,9 ...
- python:图片拼接
一:尺寸相同的图片拼接 import os from PIL import Image width_i = 200 height_i = 200 row_max = 3 line_max = 3 al ...
- 手工实现Array List和Linked List
Array List样例: /** * 增加泛型 * 自动增加数组容量 * 增加set.get方法:增加数组边界的检查 * 增加remove方法 */package cn.study.lu.four; ...
- exec()和元类
目录 一.exec()的作用 二.元类 2.1什么是元类,元类的作用是什么? 2.2自定义创建元类 一.exec()的作用 exec执行储存在字符串或文件中的 Python 语句,相比于 eval,e ...
- 对calc()的研究
1.calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度 calc()最大的好处就是用在流体布局上 2.calc()使用通用的数学运算规则 使用“+”.“ ...
- servlet中中文正常显示,mysql数据库手动插入中文正常显示,servlet向mysql中插入中文显示乱码
作者:http://5563447.blog.51cto.com/5553447/1422627 问题是:就是POST请求提交表单数据给servlet,通过JDBC插入Mysql,出现中文乱码. 解决 ...
- Python3解leetcode Number of Boomerangs
问题描述: Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple ...
- 历时小半年总结之JAVA
一.JavaSE 1.多线程 (1).进程与线程的区别? 答:进程是所有线程的集合,每一个线程是进程中的一条执行路径,线程只是一条执行路径. (2).为什么要用多线程? 答:提高程序效率 (3).多线 ...
- [CSP-S模拟测试]:reverse(数位DP)
题目描述 我们定义: $\overline{d_k...d_2d_1}=\sum \limits_{i=1}^kd_i\times {10}^{i-1}=n(d_i\in [0,9]\ and\ d_ ...