NumPy 数组索引、维度增加、拼接
2021-03-01 19:28
标签:ping error imp http bbb data- index 图片 mis NumPy(Numerical Python)是Python中科学计算的核心库,支持大量的维度数组与矩阵运算,在数组处理上功能真的很强,在Python中调用numpy进行数组相关计算就很方便。 看图像处理相关代码的时候常常会遇到一些numpy相关语法,简洁高效,看不懂就影响阅读的质量与速度,这篇文章帮助解决和记录常遇到的一些基于numpy的数组数据变换问题。 numpy中数组索引问题: 总结如下表: numpy数组维度增加: 数组增加可以使用np.newaxis()函数 和 添加None方法 numpy数组拼接: 常用的还是np.concatenate() 接上一段变量使用 以上。 欢迎关注公众号: NumPy 数组索引、维度增加、拼接 标签:ping error imp http bbb data- index 图片 mis 原文地址:https://www.cnblogs.com/xiaoheizi-12345/p/14425771.html单维整数索引
>>> import numpy as np
>>>aaa = np.array(range(1,10))
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> aaa[1:5:2]
array([2, 4])
>>> aaa.reshape((3,-1))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> aaa.reshape((3,-1))[0:2:2]
array([[1, 2, 3]])
#以整数作为索引,以[起始索引:终止索引:步长] 为格式索引,步长为1时可省略步长
单维数组索引
>>> aaa[[0]]
array([1])
>>> aaa[[0,2]]
array([1, 3])
>>> aaa.reshape((3,-1))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> aaa.reshape((3,-1))[[0,2]]
array([[1, 2, 3],
[7, 8, 9]])
>>>aaa.reshape((3,-1))[[0,0,1,2,2,0,1]]
array([[1, 2, 3],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[7, 8, 9],
[1, 2, 3],
[4, 5, 6]])
# 已知数组a、b,使用a[b]进行索引,数组b中的值是a中元素所在的索引,b中元素个数可以超过a中元素个数。
多维整数索引
>>> aaa.reshape((3,1,-1))
array([[[1, 2, 3]],
[[4, 5, 6]],
[[7, 8, 9]]])
>>> aaa.reshape((3,1,-1))[0,0]
array([1, 2, 3])
>>>aaa.reshape((3,1,-1))[2,0,0:2]
array([7, 8])
# 索引之间用冒号是在同一维度上取值,用逗号是在不同维度上取值
多维数组索引
>>> aaa.reshape((3,1,-1))
array([[[1, 2, 3]],
[[4, 5, 6]],
[[7, 8, 9]]])
>>> aaa.reshape((3,1,-1))[[0,0,2],[0]]
array([[1, 2, 3],
[1, 2, 3],
[7, 8, 9]])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0,0]]
IndexError: shape mismatch:
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1]]
array([2, 2, 8])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1,0]]
IndexError: shape mismatch:
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1,0,0]]
array([2, 1, 7])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1]]
array([2, 2, 8])
>>> aaa.reshape((3,1,-1))[[0,2]]
array([[[1, 2, 3]],
[[7, 8, 9]]])
>>> aaa.reshape((3,1,-1))[[0,2],[0]]
array([[1, 2, 3],
[7, 8, 9]])
>>> aaa.reshape((3,1,-1))[[0,2],[0,0]]
array([[1, 2, 3],
[7, 8, 9]])
>>>aaa.reshape((3,1,-1))[[0,2],[0,0],[0]]
array([1, 7])
>>>aaa.reshape((3,1,-1))[[0,2],[0,0],[0,1]]
array([1, 8])
# 多个数组当索引,可以在第一个数组中以目标所在索引取出多个索引目标,之后的索引数组要在第一个数组取出的结果上操作
>>> import numpy as np
>>> aaa = np.array(range(1,10))
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>bbb = aaa[2, None]
>>>bbb
array([3])
>>>ccc = aaa[2,np.newaxis]
>>>ccc
array([3])
>>>np.concatenate((bbb,ccc),0)
array([3, 3])
>>>np.concatenate((bbb,ccc),1)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
>>>np.concatenate((bbb[...,None],ccc[...,None]),1)
array([[3, 3]])