Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy中重塑Ndarray与常规数组?_Python_Arrays_Numpy_Scipy - Fatal编程技术网

Python 在numpy中重塑Ndarray与常规数组?

Python 在numpy中重塑Ndarray与常规数组?,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,我有一个类型为“numpy.ndarray”的对象,称为“myarray”,当使用python的“print”打印到屏幕上时,它看起来像是点击 [[[ 84 0 213 232] [153 0 304 363]] [[ 33 0 56 104] [ 83 0 77 238]] [[ 0 0 9 61] [ 0 0 2 74]]] “myarray”是由另一个库生成的。myarray.shape的值等于(3,2)。我希望这是一个三维数组,有三个索引。当我尝试自己制

我有一个类型为“numpy.ndarray”的对象,称为“myarray”,当使用python的“print”打印到屏幕上时,它看起来像是点击

[[[ 84   0 213 232] [153   0 304 363]]
 [[ 33   0  56 104] [ 83   0  77 238]]
 [[ 0  0  9 61] [ 0  0  2 74]]]
“myarray”是由另一个库生成的。
myarray.shape
的值等于(3,2)。我希望这是一个三维数组,有三个索引。当我尝试自己制作此结构时,使用:

second_array = array([[[84, 0, 213, 232], [153, 0, 304, 363]],
 [[33, 0, 56,  104], [83,  0, 77,  238]],
 [[0,  0, 9,   61],  [0,   0,  2, 74]]])
我得到了
第二个数组。正如预期的那样,shape
等于
(3,2,4)
。为什么会有这种差异?此外,鉴于此,我如何重塑“myarray”以合并两列,即结果是:

[[[ 84   0 213 232 153   0 304 363]]
 [[ 33   0  56 104  83   0  77 238]]
 [[ 0  0  9 61  0  0  2 74]]]
编辑:为了澄清,我知道在
第二个数组
的情况下,我可以执行
第二个数组。重塑((3,8))
。但是对于格式为
myarray
但没有3d索引的ndarray,这是如何工作的呢

myarray.dtype
是“
object
”,但也可以更改为ndarray

编辑2:越来越近,但仍然无法完全获得
ravel
/
展平
,然后再进行重塑。我有:

a = array([[1, 2, 3],
       [4, 5, 6]])
b = array([[ 7,  8,  9],
       [10, 11, 12]])
arr = array([a, b])
我尝试:

arr.ravel().reshape((2,6))
但是这就给了
[[1,2,3,4,5,6],…]
,我想要
[[1,2,3,7,8,9],…]
。如何做到这一点


谢谢。

事实上,
ravel
hstack
是重塑阵列的有用工具:

import numpy as np

myarray = np.empty((3,2),dtype = object)
myarray[:] = [[np.array([ 84,   0, 213, 232]), np.array([153, 0, 304, 363])],
 [np.array([ 33,   0,  56, 104]), np.array([ 83,   0,  77, 238])],
 [np.array([ 0, 0,  9, 61]), np.array([ 0,  0,  2, 74])]]

myarray = np.hstack(myarray.ravel()).reshape(3,2,4)
print(myarray)
# [[[ 84   0 213 232]
#   [153   0 304 363]]

#  [[ 33   0  56 104]
#   [ 83   0  77 238]]

#  [[  0   0   9  61]
#   [  0   0   2  74]]]

myarray = myarray.ravel().reshape(3,8)
print(myarray)
# [[ 84   0 213 232 153   0 304 363]
#  [ 33   0  56 104  83   0  77 238]
#  [  0   0   9  61   0   0   2  74]]

关于编辑2:

import numpy as np

a = np.array([[1, 2, 3],
       [4, 5, 6]])
b = np.array([[ 7,  8,  9],
       [10, 11, 12]])
arr = np.array([a, b])
print(arr)
# [[[ 1  2  3]
#   [ 4  5  6]]

#  [[ 7  8  9]
#   [10 11 12]]]
注意

In [45]: arr[:,0,:]
Out[45]: 
array([[1, 2, 3],
       [7, 8, 9]])
由于您希望第一行是
[1,2,3,7,8,9]
,因此上面显示了您希望第二个轴是第一个轴。这可以通过
swapaxes
方法实现:

print(arr.swapaxes(0,1).reshape(2,6))
# [[ 1  2  3  7  8  9]
#  [ 4  5  6 10 11 12]]
arr = np.hstack([a, b])
# [[ 1  2  3  7  8  9]
#  [ 4  5  6 10 11 12]]
或者,给定
a
b
,或等效地
arr[0]
arr[1]
,您可以直接使用
hstack
方法形成
arr

print(arr.swapaxes(0,1).reshape(2,6))
# [[ 1  2  3  7  8  9]
#  [ 4  5  6 10 11 12]]
arr = np.hstack([a, b])
# [[ 1  2  3  7  8  9]
#  [ 4  5  6 10 11 12]]

你能告诉我们什么是myarray.dtype吗?你能告诉我们什么是
repr(myarray)
(这比
打印myarray
)更有用吗?我看到了你的编辑,但我想知道
myarray.dtype
。或者,告诉我
类型(myarray[0][0])
。我的意思是
myarray
:它是
object
<代码>类型(myarray[0][0])是
repr
数组([[[84 0 213 232],…],dtype=object)
。简而言之,条目的类型是
object
,这可能是问题所在?但它们只是整数,所以我想将其设置为更易于使用的“常规”numpy数组,因此它是一个数组数组数组。您有权访问“另一个库”吗这给了您
myarray
?听起来好像有错误,您应该修复它,而不是重塑输出。在这种情况下,您可以使用
myarray.astype(int)组合来转换它
np.ravel
np.reforme
谢谢,尽管我仍然不能完全正确地理解,请参见编辑。欢迎提供相关提示!谢谢