1

请看下面的代码片段:

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 是我的二维数据矩阵。我想要做的是将第 4 列提取到一个新的数组 xLinearAcc 中。然后我将 xLinearAcc 中的每一项平方并将它们存储到另一个新数组 xLinearAccSqr 中。

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

然后问题来了。myData 的第一列被奇怪地修改了。我不想要这个。有人可以帮忙吗??我将非常感谢您的帮助!~~

===========================更新======================= =================

问题解决了。在此处发布解决方案可能对其他人有所帮助。

利用

xLinearAccSqr = copy(myData[:,0])

我猜Python如何传递引用而不是值。因此,只需制作一个副本。

4

1 回答 1

0

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

使用任何数组创建例程创建一个新数组。

于 2013-05-22T06:27:12.980 回答