Python - 原始数据矩阵在i,v之后在enumerate():语句中被修改

时间:2013-05-22 06:13:46

标签: python python-3.x

请参阅下面的代码段:

import numpy as np

# Load the .txt file in
myData = np.loadtxt('data.txt')

# Extract the time and acceleration columns
time = myData[:,0]

# Extract the linear acceleration columns
xLinearAcc = myData[:,4]
yLinearAcc = myData[:,5]
zLinearAcc = myData[:,6]

# Find the linear accelerations
xLinearAccSqr = myData[:,0]
for i, v in enumerate(xLinearAcc):
    xLinearAccSqr[i] = pow(v,2)

myData是我的2D数据矩阵。我想要做的是将第4列提取到新的数组xLinearAcc中。然后我将xLinearAcc中的每个术语都放在一起,并将它们存储到另一个新的数组xLinearAccSqr中。

(我有xLinearAccSqr = myData [:,0]的原因是,如果我没有那行,编译器总是告诉我我的xLinearAccSqr未定义。所以我只是随机使它等于第1列,因为无论如何以后所有的值都会被覆盖。不知道这条线是否会造成麻烦)

然后出现了问题。 myData的第一列被奇怪地修改了。我不想要这个。 有谁可以帮忙? 我真的很感激帮助!! ~~

========================== UPDATES ==================== ===================

问题解决了。 在这里发布解决方案可能有助于其他人。

使用

xLinearAccSqr = copy(myData[:,0])

我猜Python有些传递引用而不是值。 因此,只需复制即可。

1 个答案:

答案 0 :(得分:0)

NumPy数组的行为与常规Python列表不同。在NumPy中,basic slicing返回原始数组的视图。这就是修改切片时原始数组被修改的原因。

使用array creation routines中的任何一个创建新数组。