首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简约的Python索引

简约的Python索引
EN

Stack Overflow用户
提问于 2022-09-30 13:13:52
回答 2查看 56关注 0票数 2

我有一个numpy数组a

代码语言:javascript
复制
import numpy as np

a = np.array([[[3, 2, 2], [3, 4, 2]],
[[1, 2, 2], [3, 4, 2]],
[[1, 2, 2], [3, 4, 2]]
])
print(a)
代码语言:javascript
复制
[[[3 2 2]
  [3 4 2]]

 [[1 2 2]
  [3 4 2]]

 [[1 2 2]
  [3 4 2]]]

我想用这样的方法来分割它的一部分:

代码语言:javascript
复制
b = []
for i in range(a.shape[0]):
    if (a[i, 0, 0] > 2 and a[i, 1, 0] > 2):
        b.append(a[i])
print(np.array(b))
代码语言:javascript
复制
[[[3 2 2]
  [3 4 2]]]

我尝试了方法1

代码语言:javascript
复制
a[np.where(a[:,:,0] > 2)]

和方法2

代码语言:javascript
复制
a[a[:,:,0]> 2]

它们的结果都是:

代码语言:javascript
复制
array([[3, 2, 2],
       [3, 4, 2],
       [3, 4, 2],
       [3, 4, 2]])

有什么方法可以像方法1或2那样处理索引吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-30 13:19:11

您可以使用np.all(..., axis=1)

代码语言:javascript
复制
a[np.all(a[:, :, 0] > 2, axis=1)]
票数 2
EN

Stack Overflow用户

发布于 2022-09-30 13:21:48

您还可以使用列表理解,它允许您适应您的自定义条件。

代码语言:javascript
复制
b = [i for i in a if i[0,0]>2 and i[1,0]>2]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73909361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档