在利用布尔值对numpy矩阵进行索引的时候,发现只能用列向量进行索引,单位列矩阵无法索引。举例子如下:
有x矩阵:
x
Out[122]:
array([[1, 2],
[3, 4],
[1, 3],
[4, 6],
[7, 7]])
有y矩阵:
y
Out[123]:
array([[ 1],
[-1],
[ 1],
[ 1],
[ 1]])
欲索引y<0对应的x和y>=0对应的x,
x[y<0, :]
Traceback (most recent call last):
File "E:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-127-edc4ad99a167>", line 1, in <module>
x[y<0, :]
IndexError: too many indices for array
发现报错,输出y<0观察:
y<0
Out[130]:
array([[False],
[ True],
[False],
[False],
[False]])
主要原因在于这里的y<0为单列矩阵,应转化为列向量。修正如下:
x[(y<0).reshape(5,), :]
Out[131]: array([[3, 4]])
numpy中单列矩阵若要转化为列向量,直接使用numpy.ndarray.reshape(m, )即可。反之,使用numpy.ndarray.reshape(m, 1)。
本文探讨了在NumPy中如何使用布尔值对矩阵进行索引,特别是遇到单列矩阵时的处理方法。通过举例说明,当尝试用单列矩阵(如y<0)索引时会遇到错误。解决这个问题的关键在于将单列矩阵转换为列向量,这可以通过使用numpy.ndarray.reshape()函数实现。具体来说,将单列矩阵reshape为(m,)形状得到列向量,或将列向量reshape为(m, 1)形状得到单列矩阵。"
120931997,9477062,动态规划解决价值相近背包问题,"['动态规划', '算法', 'C++', '数学建模']

664

被折叠的 条评论
为什么被折叠?



