python - 如何实现逻辑和数组长度?

标签 python arrays matlab numpy logical-operators

我需要翻译matlab代码

indexSelect0 = a.index1==0 & a.index2==wRange;

进入快速Python风格。我的尝试是:

idx1=np.array(np.where(a['index2'][:,0]==wIndex2))
idx=np.array(np.where(a['index1'][:,0]==wIndex1))
indexSelect0 = ma.masked_array(idx,mask=[not (i in idx1[0,:]) for i in idx[0,:]])

但是需要一段时间,因为数组很长(超过 5M 的样本)。

问题可以表述为:我有一个由不同观察值组成的数据数组。我有两个索引可以让我知道什么在哪里。但我无法找到组合两个选项来过滤数据的正确方法。

希望它是清楚的。

感谢您的帮助

最佳答案

对于备份,我找到了答案。我感谢 Anton 引导我使用 DataFrame

import pandas as pd
d = {'index1': a['index1'][:,0].squeeze(), 'index2': a['index2'][:,0].squeeze(), 'data': x}
df= pd.DataFrame(data=d)
y = df[(df.index1==wIndex1) & (df.index2==wIndex2)]

因此,我使用 pandas 模块的 DataFrame 和 bool 运算符来索引和选择数据(更多信息请参见 http://pandas.pydata.org/pandas-docs/stable/indexing.html )。它工作得很好:可读、编码简单并且速度更快。

关于python - 如何实现逻辑和数组长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35893894/

相关文章:

python - Pandas 转向季度数据,但缺少季度数据

python - 在 Python 3 中将字节转换为可读字符串

arrays - vba sumifs 单列中的多个条件

matlab - 用于光纤对准的傅里叶变换

Python列表弹出

Python If 语句永远不会计算为真

c - 将数组作为参数传递并交换数据 - 意外数据

matlab - 在 Matlab 中,如何在任意大的矩阵上执行 fprintf 命令

matlab - 将大向量中的每个元素分配给重复次数的有效方法

python - Tensorflow/Keras : Model accuracy during training is always 0. 5 输入大小与第一个官方教程不同