python x[:] x[::]用法总结
x[:,0]
# 二维数组取第1维所有数据
x[:,1]
# 第2列
x[0,:]
# 第1行
x[3,:]
# 第4行
x[1:4,:]
# 第一二三行
x[:,n]或者x[n,:]
x[:,n]表示在全部数组(维)中取第n个数据,直观来说,x[:,n]就是取所有集合的第n个数据,
x[n,:]表示在n个数组(维)中取全部数据,直观来说,x[n,:]就是取第n集合的所有数据,
x[1,:]即取第一维中下标为1的元素的所有值,输出结果:
举例说明:
import numpy as np
X = np.array([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]])
print X[:,0]
>>>[0 2 4 6 8 10 12 14 16 18]
print X[1,:]
>>>[2 3]
总结一下:
- 无论是左边还是右边逗号都要靠近冒号:
- 如果冒号:的左边或者右边还有冒号,这时候就说明其中一个冒号代表的是范围(eg:1:5 从1到4)
- 如果冒号:左边或者右边没有任何东西,那么这时候代表全体
- [a:b] 对a的改变是行的改变,对b的改变是队列的改变
再高维度的处理方式是相同的,这里我们只讲解三维和二维的使用。
对于X[:,0];
是取二维数组中第一维的所有数据
对于X[:,1]
是取二维数组中第二维的所有数据
对于X[:,m:n]
是取二维数组中第m维到第n-1维的所有数据
对于X[:,:,0]
是取三维矩阵中第一维的所有数据
对于X[:,:,1]
是取三维矩阵中第二维的所有数据
对于X[:,:,m:n]
是取三维矩阵中第m维到第n-1维的所有数据
出现一个新的问题:负数出现了应该怎么理解?
x=[1,2,3,4,5,6,7,8,9,10]
x[-3:0]
x[:-3]
结果:
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> x[-3:]
[8, 9, 10]
>>> x[:-3]
[1, 2, 3, 4, 5, 6, 7]
总结规律:
- 负数在左侧,则从后往前数n个
- 负数在右侧,则是排除了后n个
python 中的[::-1]
for value in rang(10)涉及的数字倒序输出:
for value in rang(10)[::-1]涉及的数字倒序输出:
一、反转
这个是python的slice notation的特殊用法。
a = [0,1,2,3,4,5,6,7,8,9]
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了
b = a[i:j:s]这种格式呢,i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东。