2017-04-19 1 views
-1

mit einem 2-dimensionalen Array, ich will klonen n * mal jedes Items. es ist genau wie ein Bild n mal auf beiden Dimensionen zu vergrößern. Hier ist mein Code:Array-Operation: Fehler: 'Int' Objekt unterstützt keine Artikelzuweisung

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 

ich ein Array erstellen

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

und anwenden Funktion auf sie

elargir (a,5) 

und hier ist thte Fehler

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 

Vielen Dank für Ihre Hilfe

+0

Mögliche Duplikat [Typeerror: 'int' Objekt nicht Gegenstand Zuordnung nicht unterstützt] (http://stackoverflow.com/questions/14805306/typeerror-int-object-does-not-support-item-assignment) –

+0

Diese Imag = [a.shape [0] * n, a.shape [1] * n] 'erstellt eine Liste mit zwei Elementen:' a.shape [0] * n' und 'a.shape [1 ] * n'. – khelwood

Antwort

0

imag ist ein 1D-Array. In werden Sie zuerst auf das erste Element dieses Arrays zugreifen, ein int, die Sie weiterhin versuchen, von j zu indizieren. Das Array in Ihrem Beispiel stimmt nicht mit dem in Ihrem ersten Codeblock überein.

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 
+0

Vielen Dank. Ersetzte np.array durch np.zeros und erhielt die Rechte-Form von imag array –

+0

imag = np.zeros ([a.shape [0] * n, a.shape [1] * n]) –

+0

Ah, das macht mehr Sinn :) Wenn Sie gefunden haben, dass diese Antwort Ihr Problem gelöst hat, dann denken Sie bitte daran [es als richtig zu markieren] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), damit andere wissen, dass das Problem gelöst ist. – roganjosh

Verwandte Themen