gpt4 book ai didi

python - 删除python中numpy数组中的行

转载 作者:行者123 更新时间:2023-12-01 04:19:27 24 4
gpt4 key购买 nike

我有一个数组,我想根据条件删除一些行。标准是如果一行中除第一个元素之外的所有元素都为零,则应将其删除。因此,如果 tempn 只有“0”,则该行将被删除。对于 narrays 和 ntemps 考虑这一点(即,没有固定的行或数组)

my_input = [array([['temp1', '32F'],
['temp2', '243K'],
['temp3', '0'],
['temp4', '0'],
['temp5', '0'],
['temp6', '30C'],
['temp7', '0'],
['temp8', '15C'],
['temp9', '0'],
['temp10', '-17C']],
dtype='|S2'), array([['temp1', '110F'],
['temp2', '44C'],
['temp3', '0'],
['temp4', '0'],
['temp5', '300K'],
['temp6', '0'],
['temp7', '0'],
['temp8', '465R'],
['temp9', '0'],
['temp10', '0']],
dtype='|S2'), array([['temp1', '0'],
['temp2', '0', '0'],
['temp3', '91F', '0'],
['temp4', '14C', '284K'],
['temp5', '260K', '0'],
['temp6', '-10C', '458R'],
['temp7', '0', '0'],
['temp8', '-1C', '12F'],
['temp9', '0', '96F'],
['temp10', '0', '0']], dtype='|S2')]

my_output = [array([['temp1', '32F'],
['temp2', '243K'],
['temp6', '30C'],
['temp8', '15C'],
['temp10', '-17C']],
dtype='|S2'), array([['temp1', '110F'],
['temp2', '44C'],
['temp5', '300K'],
['temp8', '465R']],
dtype='|S2'), array([['temp1', '0', '423R'],
['temp3', '91F', '0'],
['temp4', '14C', '284K'],
['temp5', '260K', '0'],
['temp6', '-10C', '458R'],
['temp8', '-1C', '12F'],
['temp9', '0', '96F']], dtype='|S2')]

我试过了

    for columns in my_input:
for rows in columns:
for elements in rows:
if rows[1]&rows[2]==0|rows[1]&rows[2]&rows[3]==0:
my_output = np.delete(my_input,(rows[1]),axis=0)

无法计算出 n 行。谁能展示如何实现这一点?

最佳答案

在您提出的解决方案中,您正在与整数 0 进行比较,但数组由字符串组成。因此 rows[1] == 0 将始终给出 False。您的解决方案还存在其他问题。

抛开这一点,这里有一些应该有用的东西:

output = []
for C in my_input:
mask = ~np.all(C[:, 1:] != '0', axis=1)
output.append(C[mask])

请注意,~ 代表元素否定。

为此的一个单线是

output = [C[~np.all(C[:, 1:] != '0', axis=1)] for C in my_input]

关于python - 删除python中numpy数组中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com