数组操作:错误:'int'对象不支持项目赋值

时间:2017-04-19 15:07:48

标签: python arrays

有一个2维数组,我希望克隆n *次每个项目。 这就像在两个维度上放大图像n次一样。 这是我的代码:

    def elargir(a,n) :
        imag=[a.shape[0]*n,a.shape[1]*n] # Array with the wanted shape
        for i in range(a.shape[0]): 
           for j in range(a.shape[1]*n): # loops on lines and columns of a
               imag[i][j]=a[i//5][j//n]  
        return imag

我创建了一个数组

    a=np.array([[1,2],[3,4]])

并在其上应用功能

    elargir (a,5)

这是错误

    Traceback (most recent call last):

      File "<ipython-input-14-508f439a1888>", line 1, in <module>
        elargir (a,5)

      File "<ipython-input-12-b2382eb5b301>", line 5, in elargir
        imag[i][j]=a[i//5][j//n]

    TypeError: 'int' object does not support item assignment

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

imag是一维数组。在for i in range(a.shape[0]):中,您将首先访问该数组的第一项,int,您将进一步尝试按j进行索引。示例中的数组与第一个代码块中的数组不匹配。

import numpy as np

a = np.arange(9).reshape(3, 3)
n = 3

imag=[a.shape[0]*n,a.shape[1]*n]
print(imag[0]) # The `i` index in your nested for loop