python中列表二维数组的用法,使用Python List Comprehension匹配二维数组和简单列表中存在的值...

本文介绍了如何使用Python和numpy库高效地从二维数组中选取特定值并反转顺序。通过实例展示了从m_out数组中选择与eqn_out匹配元素并进行逆序的操作过程,包括简单的字典方法和numpy的in1d和searchsorted函数。
摘要由CSDN通过智能技术生成

[编辑首先采用更简单的方法。]

在实践中,我可能只是这样做:

In [166]: d = dict(m_out[:,::-1])

In [167]: [(k, d[k]) for k in eqn_out if k in d]

Out[167]: [(7, 6), (9, 8), (11, 10), (13, 12), (15, 14), (17, 16)]但为了好玩,坚持不懈,如下:

[更新:更好的numpy方法]:

In [15]: m_out[np.in1d(v, eqn_out)][:, ::-1]

Out[15]:

array([[ 7, 6],

[ 9, 8],

[11, 10],

[13, 12],

[15, 14],

[17, 16]])或者我最初的numpy方法:

In [150]: import numpy as np

In [151]: m_out = np.arange(50).reshape(25,2)

In [152]: v = m_out[:,1]

In [153]: eqn_out = np.arange(7, 18)

In [154]: eqn_out

Out[154]: array([ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])只保留我们所知道的值:

In [155]: np.intersect1d(eqn_out, v)

Out[155]: array([ 7, 9, 11, 13, 15, 17])找到他们所在的位置(假设数据已排序!!):

In [156]: v.searchsorted(np.intersect1d(eqn_out, v))

Out[156]: array([3, 4, 5, 6, 7, 8])使用这些索引进行选择:

In [157]: m_out[v.searchsorted(np.intersect1d(eqn_out, v))]

Out[157]:

array([[ 6, 7],

[ 8, 9],

[10, 11],

[12, 13],

[14, 15],

[16, 17]])翻转:

In [158]: m_out[v.searchsorted(np.intersect1d(eqn_out, v))][:,::-1]

Out[158]:

array([[ 7, 6],

[ 9, 8],

[11, 10],

[13, 12],

[15, 14],

[17, 16]])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值