读进来的数据分别赋值给两个不同的文件,一个是异常值处理前的文件,一个是异常值处理后的文件,为什么打印出来是一样的?应该不一样,处理前文件中的异常值没有了,为什么?但保存成csv文件打开是不一样的。
x1 = npdata[:,num1]
print(npdata[:,num1])
print('xxxxx')
x2 = log[:,num1]
print(log[:,num1])
y = log[:,0]
again2
[54.4 43.5 30.1 ... 30.8 34.9 36.4]
==== #应该是叉,贴文格式要求不能重复字符叉
[54.4 43.5 30.1 ... 30.8 34.9 36.4]
为了防止文件搞混,文件读进来后分别赋值给不同的文件名,对其中一个做异常值处理。
异常值处理前后的文件各自保持,以便于后面对比,包括绘制曲线对比。谢谢!
当这样做时:
x1 = npdata[:,num1]
实际上是把 npdata 的一列的值赋给了 x1,而不是把整个 npdata 赋给了 x1。
所以如果想要把整个文件赋值给变量,就要这样做:
x1 = np.copy(npdata)
这样就可以使得异常值处理前后的文件各自保持独立了。
同时,如果想要保存处理后的数据到 CSV 文件中,可以使用 numpy 模块的 savetxt 函数:
np.savetxt("processed_data.csv", x1, delimiter=",")
仅供参考,望采纳,谢谢。
py统计量计算和异常值处理
借鉴下
https://blog.csdn.net/m0_49556086/article/details/127144989
代码不全,以及你的文件是咋样的,详细一点可能大家可也更好的为你进行解答!!!
我猜测哈可能是在你给两个文件赋值的过程中,如果你直接将数据赋值给另一个文件,那么这两个文件实际上指向的是同一个地址,对其中一个文件的修改会反映到另一个文件上。
望采纳!!!点击回答右侧即可采纳!!
要解决这个问题,你需要在赋值时使用切片操作,或者使用 copy 模块中的 deepcopy 函数进行深拷贝
我写个实例代码给你:
在你给两个文件赋值的过程中,如果你直接将数据赋值给另一个文件,那么这两个文件实际上指向的是同一个地址,对其中一个文件的修改会反映到另一个文件上。
要解决这个问题,你需要在赋值时使用切片操作,或者使用 copy 模块中的 deepcopy 函数进行深拷贝。
示例代码:
你可以自己对比一下下
import copy
data = [1, 2, 3, 4, 5]
#使用切片操作进行浅拷贝
data1 = data[:]
data1[0] = 0
print(data) # [1, 2, 3, 4, 5]
print(data1) # [0, 2, 3, 4, 5]
#使用 deepcopy 函数进行深拷贝
data2 = copy.deepcopy(data)
data2[0] = -1
print(data) # [1, 2, 3, 4, 5]
print(data2) # [-1, 2, 3, 4, 5]
没有关键部分的代码和文件,建议提供一下更多信息
不用盲猜,直接说就是你在第一次保存后,在第二次保存文件前,有地方修改了内容,导致内容不一样。
应该是这个地方出了问题: 为了防止文件搞混,文件读进来后分别赋值给不同的文件名,对其中一个做异常值处理。
正确的方式是: 把这个输入文件可以读取两次
在这个代码中,你对两个变量 x1 和 x2 分别进行了赋值,并且打印了它们的值,然而你发现 x1 和 x2 的值是一样的。这可能是因为 x1 和 x2 共享了一个同一内存地址,所以你对 x1 进行的修改同样会影响到 x2。
为了避免这种情况,可以使用 copy 库中的 deepcopy 函数来拷贝一个对象,并确保拷贝后的对象和原对象没有共享内存。
例如,可以这样更新你的代码:
from copy import deepcopy
# ...
x1 = deepcopy(npdata[:,num1])
x2 = deepcopy(log[:,num1])
y = log[:,0]
# ...
这样,就可以确保 x1 和 x2 之间没有共享内存,在修改 x1 时不会影响到 x2。
希望这能帮到你!