Python Numpy 整形错误
Python Numpy Reshape Error
我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误。
数组 (x) 的形状为 (6, 10, 300),我想将其重塑为 (6, 3000)。
我正在使用以下代码:
reshapedArray = np.reshape(x, (x.shape[0], x.shape[1]*x.shape[2]))
我收到的错误是:
TypeError: only integer scalar arrays can be converted to a scalar index
但是,如果我将 x 变成一个列表,它会起作用:
x = x.tolist()
reshapedArray = np.reshape(x, (len(x), len(x[0])*len(x[0][0])))
你知道为什么会这样吗?
提前致谢!
编辑:
这是我 运行 产生错误的代码
x = np.stack(dataframe.as_matrix(columns=['x']).ravel())
print("OUTPUT:")
print(type(x), x.dtype, x.shape)
print("----------")
x = np.reshape(x, (x.shape[0], x.shape[1]*x[2]))
OUTPUT:
<class 'numpy.ndarray'> float64 (6, 10, 300)
----------
TypeError: only integer scalar arrays can be converted to a scalar index
只有当 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
,文档会对此进行解释:
One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.
我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误。
数组 (x) 的形状为 (6, 10, 300),我想将其重塑为 (6, 3000)。
我正在使用以下代码:
reshapedArray = np.reshape(x, (x.shape[0], x.shape[1]*x.shape[2]))
我收到的错误是:
TypeError: only integer scalar arrays can be converted to a scalar index
但是,如果我将 x 变成一个列表,它会起作用:
x = x.tolist()
reshapedArray = np.reshape(x, (len(x), len(x[0])*len(x[0][0])))
你知道为什么会这样吗?
提前致谢!
编辑:
这是我 运行 产生错误的代码
x = np.stack(dataframe.as_matrix(columns=['x']).ravel())
print("OUTPUT:")
print(type(x), x.dtype, x.shape)
print("----------")
x = np.reshape(x, (x.shape[0], x.shape[1]*x[2]))
OUTPUT:
<class 'numpy.ndarray'> float64 (6, 10, 300)
----------
TypeError: only integer scalar arrays can be converted to a scalar index
只有当 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
,文档会对此进行解释:
One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.