Die meisten, wenn nicht alle Funktionen in np.char
anzuwenden. Es ist ein wenig schneller als direkte Iteration (oder vectorize
), aber nicht drastisch so.
Es gibt keine Schneidemaschine; Zumindest nicht mit dieser Art von Namen. Am nächsten ist, die Indizierung mit einer Scheibe:
In [274]: 'astring'[1:3]
Out[274]: 'st'
In [275]: 'astring'.__getitem__
Out[275]: <method-wrapper '__getitem__' of str object at 0xb3866c20>
In [276]: 'astring'.__getitem__(slice(1,4))
Out[276]: 'str'
Ein iterativer Ansatz mit frompyfunc
sein kann (die auch von vectorize
verwendet wird):
In [277]: a = numpy.array(['hello', 'how', 'are', 'you'])
In [278]: np.frompyfunc(lambda x:x[1:3],1,1)(a)
Out[278]: array(['el', 'ow', 're', 'ou'], dtype=object)
In [279]: np.frompyfunc(lambda x:x[1:3],1,1)(a).astype('U2')
Out[279]:
array(['el', 'ow', 're', 'ou'],
dtype='<U2')
ich es als ein einzelnes Zeichen Array anzeigen könnte, und Slice, das
In [289]: a.view('U1').reshape(4,-1)[:,1:3]
Out[289]:
array([['e', 'l'],
['o', 'w'],
['r', 'e'],
['o', 'u']],
dtype='<U1')
Ich muss immer noch herausfinden, wie man es zurück in 'U2' konvertieren kann.
In [290]: a.view('U1').reshape(4,-1)[:,1:3].copy().view('U2')
Out[290]:
array([['el'],
['ow'],
['re'],
['ou']],
dtype='<U2')
Die erste Ansicht Schritt zeigt die Databuffer als py3 Zeichen (diese in einem S
oder Py2 Zeichenfolge Fall sein Bytes würde):
In [284]: a.view('U1')
Out[284]:
array(['h', 'e', 'l', 'l', 'o', 'h', 'o', 'w', '', '', 'a', 'r', 'e', '',
'', 'y', 'o', 'u', '', ''],
dtype='<U1')
Pflückbereich 1: 3 Säulen beträgt a.view('U1')[[1,2,6,7,11,12,16,17]]
Kommissionierung und dann Umgestaltung und Ansicht. Ohne ins Detail zu gehen, überrascht es mich nicht, dass es eine Kopie benötigt.
Ich bin mir nicht sicher, was die Frage ist. Wer vermisst diese Funktion? –
Numpys 'routines.char' scheint es zu vermissen. Ich habe die Frage bearbeitet, um das deutlicher zu machen. –
Ich habe auch nach dieser Funktionalität gesucht. Ich glaube, ich habe immer eine Art Loop benutzt. – farenorth