给定一个 2D numpy 数组,即;
import numpy as np
data = np.array([
[11,12,13],
[21,22,23],
[31,32,33],
[41,42,43],
])
我需要创建一个新的子数组,或者根据所需行和列的两个掩码向量修改选定的元素;
rows = [False, False, True, True]
cols = [True, True, False]
这样
print subArray
# [[31 32]
# [41 42]]
首先,确保您的rows
and cols
实际上是布尔值ndarrays
,然后使用它们来索引您的数据
rows = np.array([False, False, True, True], dtype=bool)
cols = np.array([True, True, False], dtype=bool)
data[rows][:,cols]
解释如果您使用list布尔值而不是ndarray
,numpy 将转换False/True
as 0/1
,并将其解释为您想要的行/列的索引。当使用布尔值时ndarray
,您实际上正在使用一些特定的 NumPy 机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)