繁体   English   中英

numpy.array访问

[英]numpy.array access

我有一个二维的numpy数组visrec 如果我做

print visrec[0,:]

我得到以下输出:

[  a1   a2   a3   a4  a5   a6]

其中a1, a2,..dtype=float64

更清楚地, visrec是存储在numpy.array对象中的1x6矩阵。 它最初是使用以下命令创建的:

visrec=numpy.array(numpy.zeros((1,6)))

在一个循环中,我正在修改visrec并将修改记录存储在列表中。 我基本上是将每个修改附加到列表rec_history=[] 我使用以下命令:

rec_history.append(visrec[0,:])

然后,为了对其进行测试,我只想使用以下命令打印rec_history的第一个元素:

print rec_history[0]

输出格式如下:

[ a1   a2  a3   a4   a5   a6]

到目前为止,一切都与我预期的一样。 但是,如果我尝试打印rec_history多个元素, rec_history得到意外的输出。 我发出以下命令:

print rec_history[0:3] 

并获得以下输出:

[array([ a1,  a2,  a3,  a4,  a5 ,
        a6]), array([  b1,   b2,   b3,
         b4,   b5,   b6]), array([  c1,   c2,   c3,
         c4,   c5,   c6])]

这正常吗? 我是否实际上将数组对象存储在我的记录列表中。 如果是这种情况,为什么仅打印列表中的一个元素就不能得到另一种输出? 这与功能print吗? 我不想存储数组对象,我想将数字列表存储在记录列表中。 我怎样才能做到这一点? 我知道matlab,但是我想这对我没有帮助。

您正在存储原始数组的切片,并且由于您从rec_history[0:3]切片中获得了多个数组,因此我假设您已将其追加了至少3次。

如果要获取rec_history的第一项的前三项,则需要执行以下操作:

rec_history[0][:3]

如果由于某种原因不想在rec_history中使用数组,则可以将附加行​​更改为:

rec_history.append(list(visrec[0,:]))

如果您打算更改visrec并希望查看它在以前的状态下的visrec ,那将是很好的选择,因为仅像您所做的那样附加数组切片只会创建对该数组那部分的引用。 因此,如果您用代码更改数组,它也会更改rec_history的内容。

暂无
暂无

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

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