Numpy 索引
一维索引 ¶
我们都知道,在元素列表或者数组中,我们可以用如同a[2]
一样的表示方法,同样的,在Numpy中也有相对应的表示方法:
import numpy as np
A = np.arange(3,15)
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
print(A[3]) # 6
让我们将矩阵转换为二维的,此时进行同样的操作:
A = np.arange(3,15).reshape((3,4))
"""
array([[ 3, 4, 5, 6]
[ 7, 8, 9, 10]
[11, 12, 13, 14]])
"""
print(A[2])
# [11 12 13 14]
实际上这时的A[2]
对应的就是矩阵A
中第三行(从0开始算第一行)的所有元素。
二维索引 ¶
如果你想要表示具体的单个元素,可以仿照上述的例子:
print(A[1][1]) # 8
此时对应的元素即A[1][1]
,在A
中即横纵坐标都为1,第二行第二列的元素,即8(因为计数从0开始)。同样的还有其他的表示方法:
print(A[1, 1]) # 8
在Python的 list 中,我们可以利用:
对一定范围内的元素进行切片操作,在Numpy中我们依然可以给出相应的方法:
print(A[1, 1:3]) # [8 9]
这一表示形式即针对第二行中第2到第4列元素进行切片输出(不包含第4列)。 此时我们适当的利用for函数进行打印:
for row in A:
print(row)
"""
[ 3, 4, 5, 6]
[ 7, 8, 9, 10]
[11, 12, 13, 14]
"""
此时它会逐行进行打印操作。如果想进行逐列打印,就需要稍稍变化一下:
for column in A.T:
print(column)
"""
[ 3, 7, 11]
[ 4, 8, 12]
[ 5, 9, 13]
[ 6, 10, 14]
"""
上述表示方法即对A进行转置,再将得到的矩阵逐行输出即可得到原矩阵的逐列输出。
最后依然说一些关于迭代输出的问题:
import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A.flatten())
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
for item in A.flat:
print(item)
# 3
# 4
……
# 14
这一脚本中的flatten
是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。而flat
是一个迭代器,本身是一个object
属性。
降低知识传递的门槛
莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛。 免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。
想当算法工程师拿高薪?转行AI无门道?莫烦也想祝你一臂之力,市面上机构繁杂, 经过莫烦的筛选,七月在线脱颖而出, 莫烦和他们合作,独家提供大额 【培训优惠券】, 让你更有机会接触丰富的教学资源、培训辅导体验, 祝你找/换工作/学习顺利~