繁体   English   中英

从numpy结构化数组中的数据打印行

[英]print row from a data in numpy structured array

我在numpy中有下一个结构化数组:

>>> matriz
rec.array([('b8:27:eb:07:65:ad', '0.130s', 255), 
          ('b8:27:eb:07:65:ad', '0.120s', 215), 
          ('b8:27:eb:07:65:ad', '0.130s', 168) ],
  dtype=[('col1', '<U17'), ('col2', '<U17'), ('col3', '<i4'), 
   ('col4','<U17')])

我需要在'col3'找到数字<179,但是我还需要打印数字所在的行。

例如,在matriz中小于179的数字是168,那么我需要打印

('b8:27:eb:07:65:ad', '0.130s', 168)

我做到了

for j in matriz['col3']:
         if j< 254:
                   print(j)

但我只有168的整数,知道吗?

而且,有人知道,如果使用熊猫图书馆,我可以这样做吗?

谢谢

您可以执行以下操作:

matrix = np.array([('b8:27:eb:07:65:ad', '0.130s', 255),
                   ('b8:27:eb:07:65:ad', '0.120s', 215),
                   ('b8:27:eb:07:65:ad', '0.130s', 168)],
                  dtype=[('col1', '<U17'), 
                         ('col2', '<U17'), 
                         ('col3', '<i4')])

for row in matrix:
    if row['col3'] < 254:
        print(row)
In [128]: arr=np.rec.array([('b8:27:eb:07:65:ad', '0.130s', 255), 
     ...:           ('b8:27:eb:07:65:ad', '0.120s', 215), 
     ...:           ('b8:27:eb:07:65:ad', '0.130s', 168) ],
     ...:   dtype=[('col1', '<U17'), ('col2', '<U17'), ('col3', '<i4')]) 

这是具有3个字段的一维数组:

In [129]: arr
Out[129]: 
rec.array([('b8:27:eb:07:65:ad', '0.130s', 255),
           ('b8:27:eb:07:65:ad', '0.120s', 215),
           ('b8:27:eb:07:65:ad', '0.130s', 168)],
          dtype=[('col1', '<U17'), ('col2', '<U17'), ('col3', '<i4')])

我们可以通过以下方式查看一个字段:

In [130]: arr['col3']
Out[130]: array([255, 215, 168], dtype=int32)

并获得其值的布尔掩码:

In [131]: arr['col3']<179
Out[131]: array([False, False,  True])

并使用该掩码从整个数组中选择元素:

In [132]: arr[arr['col3']<179]
Out[132]: 
rec.array([('b8:27:eb:07:65:ad', '0.130s', 168)],
          dtype=[('col1', '<U17'), ('col2', '<U17'), ('col3', '<i4')])

由于它是一个rec.array ,而不仅仅是结构化数组,因此我们也可以将字段作为属性来访问:

In [135]: print(arr[arr.col3<254])
[('b8:27:eb:07:65:ad', '0.120s', 215) ('b8:27:eb:07:65:ad', '0.130s', 168)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM