python - numpy数组中的向量化非零组
问题描述
假设您有 1d numpy 数组:
[0,0,0,0,0,1,2,3,0,0,0,0,4,5,0,0,0]
如果不使用 for 循环,您将如何创建以下组?
[1,2,3], [4,5]
解决方案
这是一种使用方法np.split
:
a
# array([0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0])
### find nonzeros
z = a!=0
### find switching points
z[1:] ^= z[:-1]
### split at switching points and discard zeros
np.split(a, *np.where(z))[1::2]
# [array([1, 2, 3]), array([4, 5])]
推荐阅读
- firebase - Flutter Firebase 云消息传递自定义声音
- java - 将两个 for 重构为 java 8 流
- css - 如何在 Ionic 4 中更改标签栏和标签图标的背景颜色
- pandas - 如何使用 Snowflake sql 查询的结果填充 pandas DataFrame?
- node-modules - Botpress 用户界面 - 导出机器人
- canvas - 三.js 在图片加载前去除背景
- python - Django 错误:“RelatedManager”对象没有属性“保存”
- javascript - Vue.js - 禁用页面的 removeAttributeQuotes
- api - 通过 AoG 中的 OAuth 获取有关 Actions on Google 的用户信息?
- asp.net - 如何在asp.net的gridview内的asp boundfield datafield hedertext上设置工具提示?