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

每行Numpy动态切片

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

每行Numpy动态切片

您可以使用蒙版数组:

import numpy as npnp.random.seed(100)x = np.arange(0, 100)x = x.reshape(20, 5)s_idx = np.random.randint(0, 3, x.shape[0])e_idx = np.random.randint(3, 6, x.shape[0])# This is optional, reduce x to the minimum possible blockfirst_col, last_col = s_idx.min(), e_idx.max()x = x[:, first_col:last_col]s_idx -= first_cole_idx -= first_colcol_idx = np.arange(x.shape[1])# Mask elements out of rangemask = (col_idx < s_idx[:, np.newaxis]) | (col_idx >= e_idx[:, np.newaxis])x_masked = np.ma.array(x, mask=mask)print(x_masked)

输出:

[[0 1 2 3 --] [5 6 7 8 9] [10 11 12 13 14] [-- -- 17 -- --] [-- -- 22 -- --] [25 26 27 28 --] [-- -- 32 33 --] [-- 36 37 38 --] [-- -- 42 -- --] [-- -- 47 -- --] [-- -- 52 53 --] [-- -- 57 58 --] [-- 61 62 63 --] [65 66 67 68 69] [70 71 72 -- --] [75 76 77 78 79] [80 81 82 83 --] [-- -- 87 88 --] [90 91 92 93 94] [-- 96 97 98 99]]

您可以使用带掩码的数组执行大多数NumPy操作,但是如果您仍然想要数组列表,则可以执行以下操作:

list_arrays = [row[~m] for row, m in zip(x, x_masked.mask)]print(list_arrays)

输出:

[array([0, 1, 2, 3]), array([5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14]), array([17]), array([22]), array([25, 26, 27, 28]), array([32, 33]), array([36, 37, 38]), array([42]), array([47]), array([52, 53]), array([57, 58]), array([61, 62, 63]), array([65, 66, 67, 68, 69]), array([70, 71, 72]), array([75, 76, 77, 78, 79]), array([80, 81, 82, 83]), array([87, 88]), array([90, 91, 92, 93, 94]), array([96, 97, 98, 99])]

尽管显然在这种情况下您不需要构造中间的掩码数组,但是您可以仅遍历

x
and的行
mask



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

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

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