栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

按值从多维numpy数组中删除元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

按值从多维numpy数组中删除元素

您可能会考虑的另一种方法:

def iterative_numpy(a):    mask = a != 1    out = np.array([ a[i,mask[i]] for i xrange(a.shape[0]) ])    return out

Divakar的方法

loop_compr_based
计算沿掩码行的总和以及该结果的累积总和。此方法避免了此类求和,
仍必须遍历的行
a
。它还返回一个数组数组。这种烦恼
out
必须用语法
out[1][2]
而不是索引
out[1,2]
。将时间与矩阵随机整数矩阵进行比较:

In [4]: a = np.random.random_integers(-1,1, size = (3,30))In [5]: %timeit iterative_numpy(a)100000 loops, best of 3: 11.1 us per loopIn [6]: %timeit loop_compr_based(a)10000 loops, best of 3: 20.2 us per loopIn [7]: a = np.random.random_integers(-1,1, size = (30,3))In [8]: %timeit iterative_numpy(a)10000 loops, best of 3: 59.5 us per loopIn [9]: %timeit loop_compr_based(a)10000 loops, best of 3: 30.8 us per loopIn [10]: a = np.random.random_integers(-1,1, size = (30,30))In [11]: %timeit iterative_numpy(a)10000 loops, best of 3: 64.6 us per loopIn [12]: %timeit loop_compr_based(a)10000 loops, best of 3: 36 us per loop

如果列多于行,则

iterative_numpy
胜出。当行数多于列数时,
loop_compr_based
取胜但
a
先移置将提高两种方法的性能。当尺寸比较相同时,
loop_compr_based
最好。

重要方面的讨论

在实现之外,需要特别注意的是,任何形状不均匀的numpy数组 都不
是实际的数组,因为这些值不会占用内存的连续部分,而且,通常的数组操作将无法正常工作。预期。

举个例子:

>>> a = np.array([[1,2,3],[1,2],[1]])>>> a*2array([[1, 2, 3, 1, 2, 3], [1, 2, 1, 2], [1, 1]], dtype=object)

注意,numpy实际上通知我们这不是带有note的通常的numpy数组

dtype=object

因此,最好只 列出 一个numpy数组并相应地使用它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号