Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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 在for循环中串联numpy数组_Python_Arrays_Numpy_For Loop_Numpy Ndarray - Fatal编程技术网

Python 在for循环中串联numpy数组

Python 在for循环中串联numpy数组,python,arrays,numpy,for-loop,numpy-ndarray,Python,Arrays,Numpy,For Loop,Numpy Ndarray,我已经把一张图片分割成16个数字来绘制回归图,现在我想把它重新组合成一张图片 我已经写了一个for循环来实现这一点,但是我很难理解来自哪里的建议以及我的错误所在。请有人解释一下为什么我的输入数组没有相同的维数 from scipy import interpolate allArrays = np.array([]) for i in range(len(a)): fig = plt.figure() ax = fig.add_axes([0.,0.,1.,1.])

我已经把一张图片分割成16个数字来绘制回归图,现在我想把它重新组合成一张图片

我已经写了一个for循环来实现这一点,但是我很难理解来自哪里的建议以及我的错误所在。请有人解释一下为什么我的输入数组没有相同的维数

from scipy import interpolate


allArrays = np.array([])
for i in range(len(a)):

    fig = plt.figure()
    ax = fig.add_axes([0.,0.,1.,1.])


    if np.amax(a[i]) > 0:
        x, y = np.where(a[i]>0)
        f = interpolate.interp1d(y, x)
        xnew = np.linspace(min(y), max(y), num=40)
        ynew = f(xnew)   
        plt.plot(xnew, ynew, '-')
        plt.ylim(256, 0)
        plt.xlim(0,256)

        fig.canvas.draw()
        X = np.array(fig.canvas.renderer._renderer)
        myArray = color.rgb2gray(X)
        print(myArray.shape)
        allArrays = np.concatenate([allArrays, myArray])
        print(allArrays.shape)

    else:

        plt.xlim(0,256)
        plt.ylim(0,256)
        fig.canvas.draw()
        X = np.array(fig.canvas.renderer._renderer)
        myArray = color.rgb2gray(X)
        print(myArray.shape)
        allArrays = np.concatenate([allArrays, myArray])
        print(allArrays.shape)




    i += 1  
输出:myArray.shape(480640)

错误消息:所有输入数组的维数必须相同

我肯定这很简单,但我搞不懂。谢谢

In [226]: allArrays = np.array([])                                                   
In [227]: allArrays.shape                                                            
Out[227]: (0,)
In [228]: allArrays.ndim                                                             
Out[228]: 1

In [229]: myArray=np.ones((480,640))                                                 
In [230]: myArray.shape                                                              
Out[230]: (480, 640)
In [231]: myArray.ndim                                                               
Out[231]: 2
在大多数情况下,1并不等于2

要与默认轴0上的
myArray
连接,
allarray
必须以
np.zero((0640),myArray.dtype)
开头。在
n
迭代之后,它将增长到
(n*480640)

在链接的答案中,新数组都是1d的,因此从shape
(0,)
开始就可以了。但是
wim的答案更好-收集列表中的所有数组,并在最后连接一个数组

循环中的重复连接很难正确进行(您必须理解形状和尺寸),并且比列表附加要慢

在大多数情况下,1并不等于2

要与默认轴0上的
myArray
连接,
allarray
必须以
np.zero((0640),myArray.dtype)
开头。在
n
迭代之后,它将增长到
(n*480640)

在链接的答案中,新数组都是1d的,因此从shape
(0,)
开始就可以了。但是
wim的答案更好-收集列表中的所有数组,并在最后连接一个数组


循环中的重复连接很难正确进行(您必须理解形状和尺寸),并且比列表附录慢。

所有阵列的形状是什么?
所有阵列的形状是什么?
所有阵列的形状是什么
?谢谢!对不起,这太明显了!我使用allarray=np.delete(allarray,slice(0,(len(myArray))),axis=0)删除连接后的第一个numpy数组。谢谢!对不起,这太明显了!我使用allarray=np.delete(allarray,slice(0,(len(myArray))),axis=0)删除连接后的第一个numpy数组。