【发布时间】:2019-02-20 14:17:56
【问题描述】:
我在引用 NumPy 数组时遇到问题。 我有一个表单数组
import numpy as np
a = [np.array([0.0, 0.2, 0.4, 0.6, 0.8]),
np.array([0.0, 0.2, 0.4, 0.6, 0.8]),
np.array([0.0, 0.2, 0.4, 0.6, 0.8])]
如果我现在创建一个新变量,
b = np.array(a)
然后做
b[0] += 1
print(a)
那么a 不会改变。
a = [array([0. , 0.2, 0.4, 0.6, 0.8]),
array([0. , 0.2, 0.4, 0.6, 0.8]),
array([0. , 0.2, 0.4, 0.6, 0.8])]
但如果我做同样的事情:
a = [np.array([0.0, 0.2, 0.4, 0.6, 0.8]),
np.array([0.0, 0.2, 0.4, 0.6, 0.8]),
np.array([0.0, 0.2, 0.4, 0.6])]
所以我在最后一个维度的末尾删除了一个数字。然后我再次这样做:
b = np.array(a)
b[0] += 1
print(a)
现在a 正在发生变化,我认为这是 Python 中的正常行为。
a = [array([1. , 1.2, 1.4, 1.6, 1.8]),
array([0. , 0.2, 0.4, 0.6, 0.8]),
array([0. , 0.2, 0.4, 0.6])]
谁能解释一下?
【问题讨论】:
-
这是尝试在 NumPy 中制作锯齿状数组或数组数组是一个非常糟糕的主意的原因之一。
-
@user2357112:我宁愿说这是您应该将列表和数组视为概念上不同事物的原因。