2 回答
TA贡献1796条经验 获得超10个赞
numpy索引建立在python列表约定之上,但扩展到多维和多元素索引。它功能强大,但复杂,但迟早您应该阅读完整的indexing文档,该文档区分“基本”和“高级”索引。
与rangeand一样arange,切片索引具有“打开”停止值
In [111]: a = np.arange(1,10).reshape(3,3)
In [112]: a
Out[112]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
使用标量进行索引会减少维度,无论在哪里:
In [113]: a[1,:]
Out[113]: array([4, 5, 6])
In [114]: a[:,1]
Out[114]: array([2, 5, 8])
这也意味着a[1,1]回报5,而不是np.array([[5]])。
使用切片索引会保留维度:
In [115]: a[1:2,:]
Out[115]: array([[4, 5, 6]])
使用列表或数组进行索引也是如此(尽管这会产生 a copy,而不是 a view):
In [116]: a[[1],:]
Out[116]: array([[4, 5, 6]])
...是一个广义的:- 使用尽可能多的需要。
In [117]: a[...,[1]]
Out[117]:
array([[2],
[5],
[8]])
您可以调整尺寸newaxis或重塑:
In [118]: a[:,1,np.newaxis]
Out[118]:
array([[2],
[5],
[8]])
请注意,尾随:是自动的。 a[1]是一样的a[1,:]。但主要的必须是明确的。
列表索引还删除了“维度/嵌套层”
In [119]: alist = [[1,2,3],[4,5,6]]
In [120]: alist[0]
Out[120]: [1, 2, 3]
In [121]: alist[0][0]
Out[121]: 1
In [122]: [l[0] for l in alist] # a column equivalent
Out[122]: [1, 4]
TA贡献1873条经验 获得超9个赞
import numpy as np
a=np.array([ [1,2,3],[4,5,6],[7,8,9]])
a[:,0] # first colomn
>>> array([1, 4, 7])
a[0,:] # first row
>>> array([1, 2, 3])
a[:,0:2] # first two columns
>>> array([[1, 2],
[4, 5],
[7, 8]])
a[0:2,:] # first two rows
>>> array([[1, 2, 3],
[4, 5, 6]])
添加回答
举报