[英]dealing multi-dimension arrays with json_encode
以下是我用來在python文件PHP中傳遞兩個矩陣進行乘法的python和php腳本:
$arr2=array(array(array(1,2),array(3,5)) ,array(array(4,6)array(2,7)))
echo json_encode($arr2);
$rtu= shell_exec("C:/Python27/python 1234.py ".json_encode($arr2));
echo $rtu."\n";
蟒蛇:
import numpy as np
from numpy.core.umath_tests import matrix_multiply
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 = matrix_multiply(A,B)
print json.dumps(Z1)
這段代碼為json_encode($ arr2)提供了正確的輸出,但是剩下的全部為空。有人可以調試代碼嗎?
這是部分解決方案。 我已經更正了python方面,該方面對我來說不起作用。
首先,我認為您應該能夠通過編寫自己的函數在PHP中乘以矩陣。
在PHP中進行矩陣乘法並沒有像處理JSON,python,啟動新進程以及來回移動數據那樣困難。
在http://pear.php.net/package/Math_Matrix上有一個無需維護的用於矩陣乘法的PHP庫。
好的,因此,如果您要執行此操作,請使用經過修正的python代碼。 它需要json和sys的導入,以及.tolist()來處理讓json對矩陣結果進行編碼(json不會按原樣對矩陣進行編碼,因為它不是簡單的數組)。 我放棄了numpy.matrix的單元測試庫,轉而使用重載*而不是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())
這是一個測試原型。 對於“生產”版本,應該刪除除最后一張以外的所有打印。
測試運行:
./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]]
看起來不錯。
我已經十多年沒有寫PHP了,所以我將把這部分留給別人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.