如何将新数组添加到上一个数组?

时间:2016-02-15 11:40:58

标签: python

我有一个图像,我做了一些处理,并希望将结果添加到我之前的数组:

import numpy as np
import cv2
import math
from scipy import misc
from PIL import Image

#load image
img = Image.open("X.png")

#my functions being defined here
def somefunctions():
return some_results

A = []

for i in range(0,13):
   A.append([])
   for j in range(0,13):

         # DO SOME PROCESSING


         # Compute weights
         Ckr = Ckr_sg(some input)
         # Ckr is a 5*5 array

         # add new Ckr to the array A
         print type(A)
         A[i].append(A.extend(Ckr))

但是,我的问题是A被认为是列表类型,每次也没有值也被添加为:

 <type 'list'>
 [[None], array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,   0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575])]
 <type 'list'>
[[None, None], array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575])]
<type 'list'>
 [[None, None, None], array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575])]
 <type 'list'>
 [[None, None, None, None], array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.13533528,  0.36787944,  1.        ,  0.36787944,  0.13533528]), array([ 0.10687793,  0.24311673,  0.36787944,  0.24311673,  0.10687793]), array([ 0.05910575,  0.10687793,  0.13533528,  0.10687793,  0.05910575])]

但我喜欢这些无价值。我该怎么办?

2 个答案:

答案 0 :(得分:0)

由于您已经在使用numpy,我建议您预先分配一个numpy数组,然后填写它。例如

A=np.empty((13, 13), dtype=np.int32)
for j in range(0,13):
    for j in range(0,13):
        A[j, k] = .... whatever you want ...

这种方式可能比你正在做的更有效,更重要的是它使数据类型/数组形状处理更简单 - 整个13x13阵列是在第一行为你制作的,然后你只需要担心什么你把它放进去了。

np.empty创建一组未初始化的值。您还可以使用np.zerosnp.ones

答案 1 :(得分:0)

在将值附加到列表之前尝试验证值:

if not(None in Ckr): 
    # Append it 

或者:

Ckr = [item for item in Ckr if not(item is None)]