在Python中如何制作numpy Matrix列的副本,以便对副本的任何进一步操作不会影响原始矩阵?

时间:2016-09-01 17:34:01

标签: python arrays numpy matrix copy

我通常会按如下方式复制整个矩阵:

from copy import copy, deepcopy
b=np.array([[2,3],[1,2]])
a = np.empty_like (b)
a[:] = b

(注意a和b不是我在我的代码中使用的,只是为这个例子编写的)。但是,如何仅复制矩阵的第一列(或任何选定的列),以便在对其进行操作时不会影响原始列?

PS。我很新,很抱歉如果我犯了一个非常愚蠢的错误,但我确实已经搜索了很长时间的解决方案

1 个答案:

答案 0 :(得分:1)

只需使用索引对列进行切片,然后使用数组对象的copy()属性创建副本:

>>> b=np.array([[2,3],[1,2]])
>>> b
array([[2, 3],
       [1, 2]])
>>> a = b[:,0].copy()
>>> a
array([2, 1])
>>> a += 2
>>> a
array([4, 3])
>>> b
array([[2, 3],
       [1, 2]])