繁体   English   中英

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

[英]Python - Original data matrix gets modified after for i, v in enumerate(): statement

请参见下面的代码片段:

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是未定义的。所以我只是随机地将其等于第一列,因为无论如何以后所有值都将被覆盖。不知道此行是否引起麻烦)

然后是问题。 myData的第一列进行了奇怪的修改。 我不想这样。 任何人都可以帮忙吗? 我将非常感谢您的帮助!

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

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

采用

xLinearAccSqr = copy(myData[:,0])

我猜想Python如何传递引用而不是值。 因此,只需复制一份即可。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM