我在尝试重塑3D numpy数组时遇到了一个奇怪的错误。
数组(x)具有形状(6,10,300),我想将其重塑为(6,3000)。
我使用以下代码:
7e 2f 3a 4f 8f e8 fa 8a 57 30 ae ca 02 96 96 63 7e 98 6f 3f
我收到的错误是:
reshapedArray = np.reshape(x, (x.shape[0], x.shape[1]*x.shape[2]))
但是,如果我将x转换为列表,它可以工作:
TypeError: only integer scalar arrays can be converted to a scalar index
你知道为什么会这样吗?
提前致谢!
编辑:
这是我正在运行的代码并产生错误
x = x.tolist()
reshapedArray = np.reshape(x, (len(x), len(x[0])*len(x[0][0])))
答案 0 :(得分:0)
只有当fetch(url, {
credentials: 'same-origin' // or 'include'
});
的第二个参数的一个元素不是整数时才会发生异常,例如:
reshape
或者如果它是>>> x = np.ones((6, 10, 300))
>>> np.reshape(x, (np.array(x.shape[0], dtype=float), x.shape[1]*x.shape[2]))
TypeError: only integer scalar arrays can be converted to a scalar index
(给定编辑历史记录:这就是你的情况):
array
然而,它似乎与解决方法一起工作,这也使得意外错误输入更加困难:
>>> np.reshape(x, (x.shape[0], x.shape[1]*x[2]))
# forgot to access the shape------^^^^
TypeError: only integer scalar arrays can be converted to a scalar index
如果您想知道>>> np.reshape(x, (x.shape[0], -1))
文档解释它:
一个形状尺寸可以是-1。在这种情况下,该值是从数组长度和剩余维度推断出来的。