Voici une solution partielle. J'ai corrigé le côté python, qui ne fonctionnait pas pour moi comme affiché.
Tout d'abord, je pense que vous devriez être capable de multiplier des matrices en PHP en écrivant votre propre fonction.
Il ne peut pas être aussi difficile de faire une multiplication matricielle en PHP que de gérer JSON, python, et de démarrer un nouveau processus et de déplacer les données dans les deux sens.
Il existe une bibliothèque PHP non maintenue pour la multiplication de matrices à l'adresse suivante http://pear.php.net/package/Math_Matrix
Ok, donc si vous voulez le faire à la manière de Rube-Goldberg, voici le code python corrigé. Il a besoin d'imports pour json et sys, et .tolist() pour gérer l'encodage du résultat de la matrice par json (json n'encodera pas la matrice telle quelle parce qu'elle n'est pas un simple tableau). J'ai écarté la bibliothèque de test unitaire pour numpy.matrix en faveur de l'utilisation de la surcharge * au lieu de matrix_multiply.
#!/usr/bin/python
import json
import sys
import numpy as np
from numpy import matrix
print json.loads(sys.argv[1])
arr=json.loads(sys.argv[1])
arr1=arr[0]
arr2=arr[1]
print arr1
print arr2
A=np.asmatrix(arr1)
print A
B=np.asmatrix(arr2)
print B
Z1 = A*B
print Z1
print json.dumps(Z1.tolist())
Il s'agit d'un prototype de test. Pour une version "production", vous devez supprimer toutes les impressions, sauf la dernière.
Test de fonctionnement :
./matrix_multiply.py "[[[2,0],[0,1]],[[1,3],[2,4]]]"
[[[2, 0], [0, 1]], [[1, 3], [2, 4]]]
[[2, 0], [0, 1]]
[[1, 3], [2, 4]]
[[2 0]
[0 1]]
[[1 3]
[2 4]]
[[2 6]
[2 4]]
[[2, 6], [2, 4]]
semble bien.
Je n'ai pas écrit de PHP depuis plus de 10 ans, je vais donc laisser cette partie à quelqu'un d'autre.