我有一个NumPy数组,我们称之为A
。我不清楚以下代码的行为:
b = A[3,:];
A[3,:] = 0;
第三行必须保存在b
中,但令人惊讶的是b
也变为零!
任何帮助?
答案 0 :(得分:2)
要制作副本,您实际上必须制作copy
!
b = A[3,:].copy()
(顺便说一下,python不是C:在语句需要之后没有分号。)
答案 1 :(得分:2)
从MATLAB / Octave迁移我看到: - )?
1)记住Python使用基于0的数组而不是MATLAB的基于1的数组。 A[3,:]
实际上会给你第4行。
2)与MATLAB不同,从这样的数组中获取切片会将切片的内存位置从 slicee 存储到切片器中。因此,正如Andrew J.所说,你需要复制。
根据您要求“第三行必须保存在b中”的陈述,您的代码应为
b = A[2,:].copy()