Schreiben Sie eine Funktion calc_frac (a, axis = 0), die ein 2-dimensionales numpy Array mit nur Nullen und Einsen akzeptiert und ein Array mit dem Anteil der Einsen in jeder Spalte (if axis = 0) oder zurückgibt in jeder Zeile (wenn Achse = 1).Funktion Numpy/Arrays
Das ist, was ich bisher haben, sind
import numpy as np
a = np.array([[1,0,1],[1,1,0],[0,1,0]])
b = np.zeros((3,1))
col_r1 = a[:,0:1]
col_r2 = a[:,1:2]
col_r3 = a[:,2:3]
i=0
j=0
k=0
for i in col_r1:
if i >= 1:
i = i+1
b[0]= i/3
for k in col_r2:
if k >= 1:
k=k+1
b[1] = k/3
for f in col_r3:
if f >= 1:
f=f+1
b[2] = f/3
print(b)
print(col_r3)
Hier werden die Probleme, die ich habe:
Wenn Sie die Mutationen b schließlich drucken Sie es b zeigt [2] als 0.6667 statt 0,333. da die Spalte nur 1 Kopie der Nummer 1 haben soll
Ich bin mir nicht sicher, wie ich diesen Code als Funktion in dem oben gezeigten Format in der Frage umschreiben könnte.
Da ich mit numpy nicht vertraut bin, habe ich mich gefragt, ob es einen Weg gibt, einen Code zu schreiben, der die gleiche Funktion ohne Verwendung von for-Schleifen ausführt.
Dank im Voraus