python - 如何根据列表条件选择ndarray中的行
问题描述
我有一个形状为 (1, 1, 5, 7) 的 ndarray,它看起来像这样:
array[0][0] =
[[ 0. 5. 0.9 0.6 0.3 0.8 0.7]
[ 0. 5. 0.5 0.2 0.2 0.4 0.7]
[ 0. 9. 0.6 0.8 0.4 1. 1. ]
[ 0. 9. 0.5 0.8 0.3 0.9 0.6]
[ 0. 16. 0.6 0.1 0. 0.4 0.4]]
我只想选择第二列的值为5
or的行9
。
为此,我在list = [5, 9]
下面创建了一个列表和一个函数,以检查第二列的值是否是list
:
def check(list, array):
tf_array = np.zeros(np.shape(array))
for l in list:
for i, element in enumerate(array):
if element == l:
tf_array[i] = True
return tf_array
然后我用来np.compress(check(list, array[0, 0, :, 1]), array, axis=2)
提取第二列的值是列表中的任何一个的行。
但是,我觉得必须有一个更简单的方法!抱歉,因为我对 Numpy 很陌生,所以请有人帮我解决这个问题吗?非常感谢!
编辑
感谢您的回答!抱歉,我忘了提到该列表是通用的,我希望能够指定它。我突然想起可以使用条件not in
结合,np.where
所以np.delete
我的问题现在解决了!
解决方案
首先,您必须将数组更改为二维,试试这个:
import numpy as np
a=np.array([[ 0, 5, 0.9, 0.6, 0.3, 0.8, 0.7],
[ 0, 5, 0.5, 0.2, 0.2, 0.4, 0.7],
[ 0, 9, 0.6, 0.8, 0.4, 1, 1 ],
[ 0, 9, 0.5, 0.8, 0.3, 0.9, 0.6],
[ 0, 16, 0.6, 0.1, 0, 0.4, 0.4]])
for l in a:
if l[1]==5 or l[1]==9:
print(l)
推荐阅读
- azure - Azure Front Door:带有不记名令牌的身份验证标头未通过
- rust - 使用静态 Fn 函数初始化 FnMut 成员变量
- r - 使用两个循环循环两个变量以在R中生成具有不同数据和工作表名称的excel文件
- android - Firebase mlKit 条形码扫描仪 mlKit 与摄像头 X 无法在 android Pie 上运行
- android - Android Sqlite 子查询未返回所有预期结果
- python - 如何用 python str.replace 编写一个灵活的函数?
- python - logging.getLogger('name').setLevel() 似乎不起作用
- python - 搜索特定的行组合
- java - 将 cn 作为参数传递时无法从 LDAP 获取数据
- c++ - 如果字符串向量包含 char 'p',我如何检查 c++