如何解决如何删除numpy python中的行和列?
我在创建将矩阵M作为输入并删除包含数字0的行和列以及提供包含剩余数字的输出时遇到麻烦。非常感谢您的帮助,因为我即将参加编程考试。
解决方法
import numpy as np
x = np.array([[1,2,3,4,5],[6,8,9,10],[11,12,13,14,15],[16,19,20]])
idxs_array = list(np.where(x==0))
idxs_array = [list(dict.fromkeys(x)) for x in idxs_array]
for axis,idxs in enumerate(idxs_array):
sub_factor = 0
for idx in idxs:
x = np.delete(x,idx-sub_factor,axis)
sub_factor += 1
print(x)
# x = [[ 1,# [11,15]]
,
1。找到零个元素
首先,我们需要确定零元素在矩阵中的位置,这可以通过np.where()
轻松完成。
np.where
将返回匹配特定条件(doc)的元素的行/列索引。
row_idx,col_idx = np.where(arr == 0)
2。删除相应的行/列
要删除相应的行和列,有一种简单的方法可以执行此操作,即建立索引(doc)。
也就是说,您可以使用True
指定要保留的行(或列),否则应为False
。
print(np.arange(4)[[True,False,True,False]])
# array([0,2])
3。把两件事放在一起
这是一个最小的例子。
arr = np.array([[ 1,[ 6,20]])
row_idx,col_idx = np.where(arr == 0)
rm_row_idx = set(row_idx.tolist())
rm_col_idx = set(col_idx.tolist())
row_mask = [i not in rm_row_idx for i in range(arr.shape[0])]
col_mask = [i not in rm_col_idx for i in range(arr.shape[1])]
arr = arr[row_mask,:]
arr = arr[:,col_mask]
print(arr)
# Shall be:
# array([[ 1,# [11,15]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。