相关疑难解决方法(0)

如何克隆或复制列表?

在Python中克隆或复制列表有哪些选项?

在使用时new_list = my_list,每次都会对new_list更改进行任何修改my_list.为什么是这样?

python clone copy list

2289
推荐指数
16
解决办法
149万
查看次数

numpy分配给切片,何时复制数组

因此,使用numpy数组将一个分配给另一个仅复制引用:即

import numpy as np
x = np.array([5,8])
y = x 
y += 1
x
Out: array([6, 9])
Run Code Online (Sandbox Code Playgroud)

如果我想复制一个深层副本,则应该使用x.copy()。当从更高维度的数组中获取视图时,也是如此,例如

A=np.array([[4,10],[8,1]])
b=A[:,1]
b+=1
A
Out: array([[ 4, 11],
            [ 8,  2]])
Run Code Online (Sandbox Code Playgroud)

反过来(从上面继续):

A[:,1]=b
b
Out: array([11,  2])
b+=1
A
Out: array([[ 4, 12],
            [ 8,  3]])
Run Code Online (Sandbox Code Playgroud)

因此,到目前为止,一切都一直在进行。但是现在如果我继续做下去:

A[:,0] = b
A
Out: array([[12, 12],
            [ 3,  3]])
b
Out: array([12,  3])
b+=1
A
Out: array([[12, 13],
            [ 3,  4]])
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么第一列保持不变,而另一列却保持不变?为什么第二列继续指向b数组?是否有任何规则来决定何时在分配时深度复制数组?

python numpy

5
推荐指数
1
解决办法
3868
查看次数

知道两个数组具有不同形状的更快方法是将值从numpy数组复制到另一个数组

什么是从数组复制到矩阵的更快的方法.例:

A = np.zeros((5, 3))
B = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)

将B的值复制到A后,生成的A应为:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [ 0  0  0]
 [ 0  0  0]]
Run Code Online (Sandbox Code Playgroud)

先感谢您

arrays numpy matrix

2
推荐指数
1
解决办法
835
查看次数

为什么我的 numpy 矩阵会在分配之前更新?

这是我的代码

import numpy as np
v = np.zeros(4)
backup = np.zeros(4)

for i in range(3):
   backup = v
   v[0] = 1
   print(backup)
Run Code Online (Sandbox Code Playgroud)

我的输出是:

[1. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
Run Code Online (Sandbox Code Playgroud)

但我预计:

[0. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
Run Code Online (Sandbox Code Playgroud)

为什么备份矩阵在分配之前更新?

python numpy python-3.x

1
推荐指数
1
解决办法
62
查看次数

标签 统计

numpy ×3

python ×3

arrays ×1

clone ×1

copy ×1

list ×1

matrix ×1

python-3.x ×1