更新numpy后,np.lib.stride_tricks.as_strided给出错误

时间:2017-03-16 16:13:22

标签: python numpy

我从旧版本更新了numpy,遗憾的是我没有检查哪一个,版本为1.12.0。 我有一个脚本,完全可以完成更新。它使用以下代码行:

from numpy.lib.stride_tricks import as_strided as _ast

    raw_shp = _ast(raw, shape=sh, strides=stride).squeeze()

给出错误:

  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/stride_tricks.py", line 102, in as_strided
      array = np.asarray(DummyArray(interface, base=x))
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 531, in asarray
    return array(a, dtype, copy=False, order=order)
TypeError: 'float' object cannot be interpreted as an index

在_ast或np.asarray中发生了什么变化,以引发此错误,我该怎么做才能避免它?

感谢任何提示

1 个答案:

答案 0 :(得分:1)

显然,较新的numpy版本在索引时使用浮点数更加挑剔。 将索引转换为整数的所有浮点数解决了这个问题 像Warren Weckesser说: 确保sh中的所有值实际上是整数,而不是具有整数值的浮点值。要么修复sh的创建方式(推荐),要么修改shape = tuple(int(i)for i in sh)。