Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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_Indexing - Fatal编程技术网

Python 基于行中的值选择numpy列

Python 基于行中的值选择numpy列,python,numpy,indexing,Python,Numpy,Indexing,假设我有一个2行10列的numpy数组。我想选择第一行中值为偶数的列。我希望得到的结果如下: a = list(range(10)) b = list(reversed(range(10))) c = np.concatenate([a, b]).reshape(2, 10).T c[c[:, 0] % 2 == 0].T 然而,这个方法转置了两次,我不认为它很像python。有没有办法做同样的工作?Numpy允许您分别沿每个维度进行选择。传入一个长度为维度数的索引元组 假设你的数组是 a =

假设我有一个2行10列的numpy数组。我想选择第一行中值为偶数的列。我希望得到的结果如下:

a = list(range(10))
b = list(reversed(range(10)))
c = np.concatenate([a, b]).reshape(2, 10).T
c[c[:, 0] % 2 == 0].T

然而,这个方法转置了两次,我不认为它很像python。有没有办法做同样的工作?

Numpy允许您分别沿每个维度进行选择。传入一个长度为维度数的索引元组

假设你的数组是

a = np.random.randint(10, size=(2, 10))
第一行中的偶数元素由掩码给出

m = (a[0, :] % 2 == 0)
您可以使用
a[0]
来获取第一行,而不是
a[0,:]
,因为缺少的索引是切片的同义词
(获取所有内容)

现在,您可以将遮罩仅应用于第二个维度:

result = a[:, m]
也可以先将遮罩转换为索引。这两种方法之间有细微的差别,在这个简单的例子中你看不到。最大的区别通常是线性指数稍微快一点,特别是如果应用多次:

i = np.flatnonzero(m)
result = a[:, i]

不要为自己是新手而道歉。我们都在某个时刻。这是一个提出得很清楚的问题,这是你学习所需要做的一切。最坏的情况是,有人会将它标记为副本。现在,我明白了。非常感谢。当我试图通过
c[c[0]%2==0]
时得到的索引器现在更有意义了。是的
c[0]%2==0
是一个大小为10的布尔数组。隐式索引的第一个维度的大小为2。它不匹配