ValueError调整ndarray的大小

时间:2014-06-04 10:19:28

标签: python numpy resize

我有一个小的python脚本,我总是遇到错误:

ValueError: cannot resize an array references or is referenced
by another array in this way.  Use the resize function

代码:

points = comp.findall('Points')              # comp is a parsed .xml
diffvals = np.arange(10, dtype=float)
diffvals.resize(len(points),8)

但有两件事我不明白:

  1. 使用调试器时,我只收到此错误。
  2. 我有另一个代码相同的脚本,一切正常。我用调试器检查了这个,所有值,数据类型等都是相同的(当然除了内存地址)
  3. 我不知道我可以做些什么来解决这个问题。

2 个答案:

答案 0 :(得分:6)

默认情况下,无法使用resize方法调整与其他阵列共享数据的NumPy阵列的大小。相反,您可以使用np.resize函数创建一个新的已调整大小的数组:

np.resize(a, new_shape)

或者您可以使用以下方法禁用参考检查:

a.resize(new_shape, refcheck=False)

您只能通过调试器看到它​​的可能原因是调试器将数组引用到例如打印出来。此外,调试器在将它们分配给变量之前可能不会存储对临时数组的引用,这可能解释了为什么其他脚本可以工作。

答案 1 :(得分:0)

使用

a = a.copy()

调整大小之前