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中你有一个单元格还是矩阵?我有一个矩阵@广康回答了这个问题。感谢您的关注:)