2014-01-24 51 views
2

我是numpy的新手。我试图定义一个二维numpy数组来读取图像,其大小变化。所以,我不能预先定义数组的大小。我的代码是声明未知大小的2D numpy数组

np.ndarray(np.float64) I 
for i in range(len(filename)): 
    I=imread(filename)  //reading an image here 
    I1=I.resize(256,256) //resizing the image 

请建议更正的代码。

预先感谢您。

+3

只是'I = imread(filename)'有什么问题?其他一切似乎都是多余的。 – user2357112

+1

你不仅是新的numpy;这似乎也是您第一次尝试编写Python代码。您的第一行确实与python无关,语法明了。试着首先了解它的底部。然而,问答论坛并不适合这个地方;一个蟒蛇引物是。 –

+0

@EelcoHoogendoorn虽然不是我第一次,但我仍然是Python的初学者。我不知道imread的返回数据类型是什么,这就是为什么我要事先定义我的原因。但是,我仍然是一个初学者 –

回答

2

如果您事先不知道大小,那么请不要使用numpy数组来累计值。使用灵活的容器(例如list),然后转换为numpy数组。

如果你使用的是非常大的东西,还有numpy.fromiter,它的表现会更有效一些,但是你必须跳过一些环节才能将它用于> 1D阵列。

作为第一个建议的例子,假设我们正在创建一个总是有10列的数组,但我们无法知道有多少行。我们将使用一个列表来存储每一行​​,然后在最后转换为一个二维数组:

import numpy as np 

data = [] 

random_val = 1 
while random_val > 0.05: 
    data.append(np.arange(10)) 
    random_val = np.random.random() 

data = np.array(data) 
print data.shape 
+0

我想知道为什么downvote ... –