我有一个图像,我做了一些处理,并希望将结果添加到我之前的数组:
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])]
但我喜欢这些无价值。我该怎么办?
答案 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.zeros
和np.ones
。
答案 1 :(得分:0)
在将值附加到列表之前尝试验证值:
if not(None in Ckr):
# Append it
或者:
Ckr = [item for item in Ckr if not(item is None)]