Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Numpy_Multidimensional Array_Indexing - Fatal编程技术网

Python numpy中保持维数的数组索引列表

Python numpy中保持维数的数组索引列表,python,arrays,numpy,multidimensional-array,indexing,Python,Arrays,Numpy,Multidimensional Array,Indexing,我有一份阿里亚的名单: data = [array([4,2,3,4], dtype=uint16), array([6.6, 7.4, 5.0, 9.5], dtype=float32)] 我想从上面满足条件的数组列表中获取值,例如: condition = array([True, False, False, True]) 结果如下: data[:][condition] # Equals to -> [array([4,4], dtype=uint16),

我有一份阿里亚的名单:

data = [array([4,2,3,4], dtype=uint16),
        array([6.6, 7.4, 5.0, 9.5], dtype=float32)] 
我想从上面满足条件的数组列表中获取值,例如:

condition = array([True, False, False, True])
结果如下:

data[:][condition]
 # Equals to -> [array([4,4], dtype=uint16), 
 #               array([6.6, 9.5], dtype=float32)]
保持相同的形状,显然会减少值的数量

我知道这样做:

data[0][np.where(condition)]
它提供了我想要的东西,但仅限于[0]数组


如何对多个这样的阵列执行此操作?

如果您有列表,请执行以下操作:

import numpy as np

data = [np.array([4,2,3,4], dtype=np.uint16),
        np.array([6.6, 7.4, 5.0, 9.5], dtype=np.float32)]

condition = np.array([True, False, False, True])


result = [e[condition] for e in data]
print(result)

如果您有列表,请执行以下操作:

import numpy as np

data = [np.array([4,2,3,4], dtype=np.uint16),
        np.array([6.6, 7.4, 5.0, 9.5], dtype=np.float32)]

condition = np.array([True, False, False, True])


result = [e[condition] for e in data]
print(result)

如果列表中的所有数组形状相同,最优雅的方法是将列表转换为numpy数组,并利用注释中提到的@Quang的numpy索引:

data = [np.array([4,2,3,4], dtype=np.uint16),
        np.array([6.6, 7.4, 5.0, 9.5], dtype=np.float32)] 

condition = np.array([True, False, False, True])
data = np.array(data)[:,condition]
输出:

[4.  4. ]
 [6.6 9.5]]

如果列表中的所有数组形状相同,最优雅的方法是将列表转换为numpy数组,并利用注释中提到的@Quang的numpy索引:

data = [np.array([4,2,3,4], dtype=np.uint16),
        np.array([6.6, 7.4, 5.0, 9.5], dtype=np.float32)] 

condition = np.array([True, False, False, True])
data = np.array(data)[:,condition]
输出:

[4.  4. ]
 [6.6 9.5]]

np.array(data)[:,condition]
行吗?那
data[:]
应该做什么?@QuangHoang answer做了我想做的。谢谢!你想保留这两种不同的数据类型,还是让它全部浮动?数组(数据)[:,条件]行得通吗?那
data[:]
应该做什么?@QuangHoang answer做了我想做的。谢谢!您想保留这两种不同的数据类型,还是将其全部浮动?谢谢您的回复。我认为在Matlab中有一个简单的索引,没有显式地执行循环:PCheck@QuangHoang在MATLAB中你有一个单元格还是矩阵?我有一个矩阵@广康回答了这个问题。谢谢你的关注:)谢谢你的回复。我认为在Matlab中有一个简单的索引,没有显式地执行循环:PCheck@QuangHoang在MATLAB中你有一个单元格还是矩阵?我有一个矩阵@广康回答了这个问题。感谢您的关注:)