Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用布尔索引复制或查看numpy子阵列_Python_Numpy - Fatal编程技术网

Python 使用布尔索引复制或查看numpy子阵列

Python 使用布尔索引复制或查看numpy子阵列,python,numpy,Python,Numpy,给定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 s

给定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]]

首先,确保
实际上是布尔
ndarrays
,然后使用它们来索引数据

rows = np.array([False, False, True, True], dtype=bool)
cols = np.array([True, True, False], dtype=bool)
data[rows][:,cols]
解释
如果使用布尔值列表而不是
ndarray
,numpy将
False/True
转换为
0/1
,并将其解释为所需行/列的索引。当使用bool
ndarray
时,实际上您使用的是一些特定的NumPy机制。

太好了,现在很清楚了,谢谢。只是没有Matlab那样直截了当地得出同样的结果。我有一个-如何在不创建新数组的情况下执行此操作?请注意,
copy
view
(如标题所示)是非常不同的事情。