Har jag tolkat uppgiften rätt? Och kan min kod förkortas på något sätt?
Jag ska omvandla tex u=[1, 7, 4, 9, 3, 2, 0, 3] och v=[8, 5, 3, 7,5] så skall findel(u, v) ge resultatet [1 4 7]. Som refererar till vilka platser i u där gemensamma element finns mellan u och v. 7 och 3 är dem gemensamma elementeten på plats 1 4 och 7.
Det finns exempel (se bild nedan) på hur man lösa uppgiften men det är ganska fritt hur man kan lösa uppgiften på.
Egentligen ska man bara fylla i rutan nedan. Och outputen ska ge [1 4 7] efter return P förmodar jag? Men testade förut med detta men när jag skulle printa P som stod det att P inte var definerat. Så jag fick improvisera lite med att fylla i efter Return P.
....................................................................................................................................................................................................................................
import numpy as np
def findel(u, v):
common_elements = np.intersect1d(u, v)
P = np.isin(u, common_elements)
return P
u = [1, 7, 4, 9, 3, 2, 0, 3]
v = [8, 5, 3, 7, 5]
result = findel(u, v)
common_indices = np.where(result)[0]
print(common_indices)
..............................................................................................................................................................................................................................................
Min fråga är om man kan effektivisera koden genom att skriva in allt innan return P för att den ska kunna ge outputen [1 4 7] efter Return P.
import numpy as np
def findel(u, v):
common_elements = np.intersect1d(u, v)
P = np.isin(u, common_elements)
u = [1, 7, 4, 9, 3, 2, 0, 3]
v = [8, 5, 3, 7, 5]
result = findel(u, v)
common_indices = np.where(result)[0]
return P
print(common_indices)