请参阅下面的代码段:
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有些传递引用而不是值。 因此,只需复制即可。
答案 0 :(得分:0)
NumPy数组的行为与常规Python列表不同。在NumPy中,basic slicing返回原始数组的视图。这就是修改切片时原始数组被修改的原因。
使用array creation routines中的任何一个创建新数组。