Ich versuche, die folgende Funktion zu verwenden:numpy.unique Fehler werfen
def randomChose(bp, xsteps, ysteps, bs):
# Number of points to be chosen
s = int((bp * xsteps * ysteps)/(bs * bs))
# Generating an array representing the input indexes
indices = numpy.arange(xsteps * ysteps)
# Resampling without replacement
cs = npr.choice(indices, size=s, replace=False)
f = []
for idx in cs:
nb = indices[max(idx-(bs*bs/2), 0):min(idx+(bs*bs/2)+1, xsteps*ysteps)]
f.append(nb)
f = numpy.array(f).flatten()
fix = numpy.unique(numpy.array(f))
return fix
, die als Parameter eine Zahl bp nimmt, XSteps die Datendimension * ysteps und ein% bs.
Was ich tun möchte, ist eine Anzahl von gültigen Indizes unter Berücksichtigung einiger Nachbarschaft in diesem Bild zu wählen.
Allerdings habe ich immer empfangen Fehler beim numpy.unique
Aufruf, nicht immer, aber:
ValueError Traceback (most recent call last)
<ipython-input-35-1b5914c3cbc7> in <module>()
9 svf_y = []
10 for s in range(samples):
---> 11 fix = randomChose(bp, xsteps, ysteps, bs)
12 rs_z0, rs_z1, rs_z2 = interpolate(len(fix), xsteps, ysteps, mean_rs)
13 ds_z0, ds_z1, ds_z2 = interpolate(len(fix), xsteps, ysteps, mean_ds)
<ipython-input-6-def08adce84b> in randomChose(bp, xsteps, ysteps, bs)
14 f.append(nb)
15 f = numpy.array(f).flatten()
---> 16 fix = numpy.unique(numpy.array(f))
17
18 return f
/usr/local/lib/python2.7/dist-packages/numpy/lib/arraysetops.pyc in unique(ar, return_index, return_inverse, return_counts)
198 ar.sort()
199 aux = ar
--> 200 flag = np.concatenate(([True], aux[1:] != aux[:-1]))
201
202 if not optional_returns:
ValueError: all the input arrays must have same number of dimensions
Dies ist, wie ich es nennen:
nx = 57.2
ny = 24.0
xsteps = 144
ysteps = 106
bs = 5 # Block size
bp = 0.1 # Percentage of blocks
fix = randomChose(bp, xsteps, ysteps, bs)
Ich versuche zu verstehen, was falsch ist. Soweit ich verstanden habe, erwarten solche Methoden eine ndarray
als Eingabe, die gegeben wird.
Vielen Dank für jede Hilfe.
Vielen Dank, @Balzola. Kannst du mir sagen, was falsch ist, wenn ich eine Liste von ndarrays erstelle und versuche, sie in ein ndarray umzuwandeln und es zu verflachen? – pceccon
Hum ... eigentlich nichts. Dachte, du benutzt den Bereich statt np.arange. Mein Fehler. Aber dann hast du noch eine Liste von ND-Arrays. Wenn sie nicht alle die gleiche Form haben, macht numpy.array (f) Sie zu einem ndarray von ndarrays _objects_. Das ist also kein ndarray von ganzen Zahlen. flatten() hat keine Wirkung, da das Array bereits eine Dimension hat. – Balzola