我有一个2D numpy数组,我想从中提取多组行/列.

# img is 2D array
img = np.arange(25).reshape(5,5)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

我知道提取一组行/列的语法.下面将提取前4行以及第3列和第4列,如下所示

img[0:4, 2:4]
array([[ 2,  3],
       [ 7,  8],
       [12, 13],
       [17, 18]])

但是,如果要提取多组行和/或列,语法是什么?我try 了下面的方法,但它导致了invalid syntax个错误

img[[0,2:4],2] 

我从上面的命令中寻找的输出是

array([[ 2],
       [12],
       [17]])

我试着搜索这个,但它只会得到一组行/列的结果,或者提取我知道怎么做的离散行/列,比如使用np.九.

在上下文中,我实际处理的2D数组的维数约为800X1200,我想从这个数组中一次性提取多个范围的行和列.大约img[[0:100, 120:210, 400, 500:600], [1:450, 500:550, 600, 700:950]]个.

推荐答案

IIUC,可以使用numpy.r_从切片生成索引:

img[np.r_[0,2:4][:,None],2] 

输出:

array([[ 2],
       [12],
       [17]])

中间产物:

np.r_[0,2:4]
# array([0, 2, 3])

np.r_[0,2:4][:,None]  # variant: np.c_[np.r_[0,2:4]]
# array([[0],
#        [2],
#        [3]])

Python相关问答推荐

点到面的Y距离

如何使用pandasDataFrames和scipy高度优化相关性计算

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

重新匹配{ }中包含的文本,其中文本可能包含{{var}

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

'discord.ext. commanders.cog没有属性监听器'

如何从pandas的rame类继承并使用filepath实例化

Python—从np.array中 Select 复杂的列子集

不允许访问非IPM文件夹

使用Python从rotowire中抓取MLB每日阵容

人口全部乱序 - Python—Matplotlib—映射

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

如何根据rame中的列值分别分组值

根据Pandas中带条件的两个列的值创建新列

Tensorflow tokenizer问题.num_words到底做了什么?

根据过滤后的牛郎星图表中的数据计算新系列

如何从一个维基页面中抓取和存储多个表格?

如果列包含空值,则PANAS查询不起作用

.awk文件可以使用子进程执行吗?

正则表达式反向查找