上一篇讲完numpy的切片问题,今天就给大家带来numpy索引问题的详细分析。
我们都知道,要使用 numpy 来存储和处理大型矩阵,我们必须学会使用矩阵的表示。如何对矩阵中的对应元素进行索引等。在此之前,我们学习了线性代数中矩阵的表示,a[2][3]表示第三行第四列的元素。好吧,在 numpy 中也是如此。
一维索引
<p><span>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<br/></span></p>
<p><span>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]<br/></span></p>
A[2] 对应于矩阵 A 中第三行(从 0 开始的第一行)的所有元素。
二维索引
当我们需要表示特定元素时,我们需要使用二维索引。仍然使用上面的例子。
<p><span>print(A[1][1]) # 8
print(A[1,1]) # 8<br/></span></p>
对一定范围内的元素进行切片操作:
<p><span>print(A[1, 1:3]) # [8 9]
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]
"""<br/></span></p>
注:上述表达方式A.T是将A转置,然后将得到的矩阵逐行输出,得到原始矩阵的逐列输出。
关于迭代输出的问题
<p><span>import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A.flatten())
# [ 3 4 5 6 7 8 9 10 11 12 13 14]
for item in A.flat:
print(item)
# 3
# 4
……
# 14<br/></span></p>
此脚本中的 Flatten 是一个扩展函数,可将多维矩阵扩展为 1 行数组。而 flat 是一个迭代器,它本身就是一个对象属性。
Numpy的切片和索引方法都在这里共享。更多Python学习推荐:
。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 20个Python代码实现小例子!11/14
- ♥ python的几种写法11/30
- ♥ 如何在python中安装pip10/03
- ♥ 70个数据分析常用网址,我先收藏了!01/16
- ♥ 如何安装python opencv08/28
- ♥ 浅谈Python异常处理机制12/13
内容反馈