NumPy 索引 迭代 Resheap
来源:互联网 发布:几个excel表数据合并 编辑:程序博客网 时间:2024/05/17 08:04
在原文基础上适当精简并更正少量原作者的笔误:
索引,切片和迭代
1. 一维数组可以被索引、切片和迭代,就像列表和其它Python序列。
>>> a =arange(10)**3>>> aarray([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])>>> a[2]8>>> a[2:5]array([ 8, 27, 64])>>>a[:6:2] = -1000 # equivalent toa[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to-1000>>> aarray([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])>>> a[ ::-1] #reversed aarray([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])>>> for i in a:... print i**(1/3.),...nan 1.0 nan 3.0 nan5.0 6.0 7.0 8.0 9.0
2. 多维数组可以每个轴有一个索引。这些索引由一个逗号分割的元组给出。
>>> def f(x,y):... return 10*x+y...>>> b =fromfunction(f,(5,4),dtype=int)>>> barray([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]])>>> b[2,3]23>>> b[0:5,1] # each row in thesecond column of barray([ 1, 11, 21, 31, 41])>>> b[ :,1] # equivalent to theprevious examplearray([ 1, 11, 21, 31, 41])>>> b[1:3,: ] # each column inthe second and third row of barray([[10, 11, 12, 13], [20, 21, 22, 23]])
3. 当少于轴数的索引被提供时,确失的索引被认为是整个切片:
>>>b[-1] # the last row.Equivalent to b[-1,:]array([40, 41, 42,43])
4. b[i] 中括号中的表达式被当作 i 和一系列 : ,来代表剩下的轴。NumPy也允许你使用“.”Example: b[i,...] 。
点(...)代表许多产生一个完整的索引元组必要的分号。如果x是秩为5的数组(即它有5个轴),那么:
x[1,2,…] 等同于x[1,2,:,:,:],
x[…,3] 等同于 x[:,:,:,:,3]
x[4,…,5,:] 等同 x[4,:,:,5,:].
>>> c = array( [[[ 0, 1, 2], # a 3D array (two stacked 2D arrays) [ 10, 12, 13]], [[100, 101,102], [110, 112,113]] ] )>>> c.shape (2, 2,3)>>> c[1,...] # same as c[1,:,:] or c[1]array([[100, 101, 102], [110, 112, 113]])>>> c[...,2] # same as c[:,:,2]array([[ 2, 13], [102,113]])
5. 迭代多维数组是就第一个轴而言的,即按行操作:
>>> for row in b:... print row [0 1 2 3][10 11 12 13][20 21 22 23][30 31 32 33][40 41 42 43]
6. 然而,如果想对数组中每一个元素进行运算,我们可以使用flat属性,该属性是数组元素的一个迭代器:
>>> for element inb.flat:... print element,...0 1 2 3 10 11 12 1320 21 22 23 30 31 32 33 40 41 42 43
7. 更改数组的形状
一个数组的形状由它每个轴上的元素个数给出:
>>> a =floor(10*random.random((3,4)))>>> aarray([[ 7., 5., 9., 3.], [ 7., 2., 7., 8.], [ 6., 8., 3., 2.]])>>> a.shape(3, 4)
8. 一个数组的形状可以被多种命令修改:
>>> a.ravel() # flatten the arrayarray([ 7., 5., 9., 3., 7., 2., 7., 8., 6., 8., 3., 2.])>>> a.shape = (6,2)>>> a.transpose() # 转置array([[ 7., 9., 7., 7., 6., 3.], [ 5., 3., 2., 8., 8., 2.]])
9. 由 ravel()展平的数组元素的顺序通常是“C风格”的,就是说,最右边的索引变化得最快,所以元素a[0,0]之后是a[0,1]。如果数组被改变形状(reshape)成其它形状,数组仍然是“C风格”的。NumPy通常创建一个以这个顺序保存数据的数组。函数 reshape() 和 ravel() 还可以被同过一些可选参数构建成FORTRAN风格的数组,即最左边的索引变化最快。
10. reshape函数改变参数形状并返回它,而 resize函数改变数组自身。
>>> aarray([[ 7., 5.], [ 9., 3.], [ 7., 2.], [ 7., 8.], [ 6., 8.], [ 3., 2.]])>>> a.resize((2,6))>>> aarray([[ 7., 5., 9., 3., 7., 2.], [ 7., 8., 6., 8., 3., 2.]])
如果在改变形状操作中一个维度被赋值为-1,其维度将自动被计算。
- NumPy 索引 迭代 Resheap
- NumPy 索引,切片和迭代
- 索引,切片和迭代 NumPy
- python 索引迭代
- 【9-2】索引迭代
- numpy-索引
- Numpy 索引
- Numpy 索引
- nditer —— numpy.ndarray 多维数组的迭代
- 迭代MapReduce的核心资料索引
- 迭代MapReduce的核心资料索引
- foreach获取当前迭代索引
- Pandas GroupBy对象 索引与迭代
- NumPy基础功能索引
- Numpy : ndarray切片索引
- numpy布尔型索引
- Numpy 布尔索引
- Numpy 花式索引
- 题目13
- Twisted源码分析4--Deferred
- 你需要了解的javascript事件传播
- UIDynamic介绍
- 题目22
- NumPy 索引 迭代 Resheap
- scala学习之Array
- 简述javascript事件委托
- 动态规划1017
- Matlab作图后,使用data cursor实现显示多个点的数据值
- android 自定义ListView实现下拉刷新
- 灵活的坐标系变换:CSS的position定位方式
- 题目23
- MySQL中的多表查询