2024-10-01 11:37:10 发布
网友
这是我目前为止的代码
y= n.genfromtxt('seguedata.txt', dtype=None, usecols = (0,1,2,5),) for i in y: if y[i][0] == y[i+1][0]: y[i][1]=0 y[i][2]=0 y[i][3]=0
我得到了错误
segue data是一个包含4列的大数据集,其中第一列是字符串,其他3列是数字。如果两个连续的行有相同的初始字符串,我想将第一行的值设置为零。在
谢谢
打印i:
i
for i in y: print(i)
您将看到它们是y的行,而不是整数。由于y是一个结构化数组,y可以通过整数或列名而不是行值的元组来索引,因此y[i]会引发错误
y
y[i]
要在对代码进行最小调整的情况下解决此问题,可以使用
for i in range(len(y)-1): if y[i][0] == y[i+1][0]: y[i][1]=0 y[i][2]=0 y[i][3]=0
尽可能避免逐个元素修改NumPy数组元素。 在整个数组上操作,或者至少在其中的大片段上操作会产生更好的结果 性能。在
在这种情况下,查找连续相等的行会更有效 价值观:
然后将mask为True的行的每列中的所有值设置为零:
mask = np.concatenate([mask, [False]]) for col in y.dtype.names[1:]: y[col][mask] = 0
打印
i
:您将看到它们是
^{pr2}$y
的行,而不是整数。由于y
是一个结构化数组,y
可以通过整数或列名而不是行值的元组来索引,因此y[i]
会引发错误要在对代码进行最小调整的情况下解决此问题,可以使用
尽可能避免逐个元素修改NumPy数组元素。 在整个数组上操作,或者至少在其中的大片段上操作会产生更好的结果 性能。在
在这种情况下,查找连续相等的行会更有效 价值观:
^{4}$然后将mask为True的行的每列中的所有值设置为零:
相关问题 更多 >
编程相关推荐