我有一个 NumPy 数组,我们称之为A
. 我不清楚以下代码的行为:
b = A[3,:];
A[3,:] = 0;
第三行必须保存在 中b
,但意外地b
也变成了零!
有什么帮助吗?
事实上,要制作副本,您必须制作copy
!
b = A[3,:].copy()
(顺便说一句,python 不是 C:语句后不需要分号。)
从 MATLAB/Octave 迁移我看到了 :-)?
1) 请记住 Python 使用基于 0 的数组,而不是 MATLAB 的基于 1 的数组。 A[3,:]
实际上会给你第四行。
2) 与 MATLAB 不同,从这样的数组中获取切片会将切片的内存位置从slicee 存储到slicer中。因此,正如 Andrew J. 所说,您需要复制。
根据您想要“第三行必须保存在 b 中”的声明,您的代码应该是
b = A[2,:].copy()