È possibile costruire una matrice numpy
da una funzione? In questo caso in particolare la funzione è la differenza assoluta di due vettori: S[i,j] = abs(A[i] - B[j])
. Un esempio di lavoro minimo che utilizza python regolare:Compilare la matrice numpy dalla differenza di due vettori
import numpy as np
A = np.array([1,3,6])
B = np.array([2,4,6])
S = np.zeros((3,3))
for i,x in enumerate(A):
for j,y in enumerate(B):
S[i,j] = abs(x-y)
Dare:
[[ 1. 3. 5.]
[ 1. 1. 3.]
[ 4. 2. 0.]]
Sarebbe bello avere una costruzione che sembra qualcosa di simile:
def build_matrix(shape, input_function, *args)
dove posso passare un funzione di input con i suoi argomenti e mantiene il vantaggio di velocità di numpy.
Questo è possibile. Che cosa hai provato? – Marcin
@Marcin - come indicato nella domanda, sto usando un semplice vecchio approccio Python per popolare la matrice in questo momento. Osservando i documenti di numpy suggeriamo che la funzione 'vectorize' potrebbe essere utile, ma non ho ancora visto come costruire la matrice dalla funzione in primo luogo. Se tu potessi indicarmi la direzione giusta (per quanto riguarda la documentazione), lo apprezzerei! – Hooked
Questo dovrebbe essere possibile in plain python. Che cosa hai provato a creare la tua funzione build_matrix? Sicuramente hai qualcosa, e sei bloccato da qualche parte, piuttosto che sperare che qualcuno lo scriva tutto per te. – Marcin