5 Star 4 Fork 1

Astraeux / phpnum

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

phpnum

Build Status

phpnum 是 PHP 语言的一个科学计算扩展。支持多维数组运算,此外也为数组运算提供了大量数学函数库。灵感源自 NumPy & NumPHP

开发方向

  • 支持线程安全
  • 提供异常处理
  • 完善函数库
  • 支持算数符号运算
  • 支持矩阵运算
  • 内存优化

文档目录


  1. 安装/配置
  2. 类与方法

安装/配置


需求

  • PHP 7 +

安装

下载phpnum最新版本,解压缩后,进入phpnum源码目录, 依次执行(其中PHP_BIN是PHP的bin目录)

$PHP_BIN/phpize
./configure --with-php-config=$PHP_BIN/php-config
make && make install

在php.ini中载入num.so,重启PHP。

类与方法


基本用法

  1. Class Num - 创建Num对象
  2. Class NumNdarray - 创建数组对象
  3. Printing - 输出数组对象

Class Num


说明: 创建Num对象

范例
$num = new Num();

Class NumNdarray


说明: 创建数组对象

参数

array: Array

返回值

ndarray: Object

范例
$num = new Num();
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

Printing


说明: 输出数组对象

范例
$num = new Num();
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);
echo $ndarray;
/* output: 
array([
  [1,2,3],
  [2,3,4]
])
*/

属性

  1. getData - 获取数组对象的原始数据
  2. getShape - 获取数组对象的各维度大小
  3. getNdim - 获取数组对象的维度
  4. getSize - 获取数组对象的元素个数

getData


说明: 获取数组对象的原始数据

参数

None

返回值

data: Array

范例
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$ndarray->getData(); // returns array([1.0, 2, 3], [2, 3, 4])

getShape


说明: 获取数组对象的各维度大小

参数

None

返回值

shape: Array

范例
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$ndarray->getShape(); // returns array(2, 3)

getNdim


说明: 获取数组对象的维度

参数

None

返回值

ndim: LONG

范例
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$ndarray->getNdim(); // returns 2

getSize


说明: 获取数组对象的元素个数

参数

None

返回值

size: LONG

范例
$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$ndarray->getSize(); // returns 6

统计

  1. amin - 获取数组对象的最小元素
  2. amax - 获取数组对象的最大元素

amin


说明: 获取数组对象的最小元素

参数

ndarray: Object

返回值

amin: Double

范例
$ndarray = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
$num->min($ndarray); // returns 1

amax


说明: 获取数组对象的最大元素

参数

ndarray: Object

返回值

amax: Double

范例
$ndarray = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
$num->amax($ndarray); // returns 4

算数运算

  1. add - 加上数组对象
  2. sub - 减去数组对象
  3. mult - 乘以数组对象
  4. div - 除以数组对象

add


说明: 加上数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例
$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
echo $a->add($b);
/* output:
array([
  [4.2,3.5,4],
  [4.5,7,6]
])
*/

sub


说明: 减去数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例
$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
echo $a->sub($b);
/* output:
array([
  [-2.2,0.5,2],
  [-0.5,-1,2]
])
*/

mult


说明: 乘以数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例
$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
echo $a->mult($b);
/* output:
array([
  [3.2,3,3],
  [5,12,8]
])
*/

div


说明: 除以数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例
$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);
$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);
echo $a->div($b);
/* output:
array([
  [0.3125,1.3333333333333,3],
  [0.8,0.75,2]
])
*/

通用方法

  1. power - 遍历数组计算次幂
  2. square - 遍历数组计算平方
  3. sqrt - 遍历数组计算平方根
  4. exp - 遍历数组计算自然常数e的次幂
  5. log - 遍历数组计算自然对数
  6. log10 - 遍历数组计算以10为底的对数值
  7. sin - 遍历数组计算正弦值
  8. cos - 遍历数组计算余弦值
  9. tan - 遍历数组计算正切值
  10. ceil - 遍历数组计算向上取整
  11. floor - 遍历数组计算向下取整
  12. fabs - 遍历数组计算绝对值

power


说明: 遍历数组计算次幂

参数

base: Object

exponent: Object or Double

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->power($ndarray, 3);
// returns array([[0.125, 1.0], [0.0, 8.0]])

square


说明: 遍历数组计算平方

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->square($ndarray);
// returns array([[0.5, 1.0], [0.0, 4.0]])

sqrt


说明: 遍历数组计算平方根

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->sqrt($ndarray);
// returns array([[0.70710678118654757, 1.0], [0.0, 1.4142135623730951]])

exp


说明: 遍历数组计算自然常数e的次幂

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->exp($ndarray);
// returns array([[1.6487212707001282, 2.7182818284590451], [1.0, 7.3890560989306504]])

log


说明: 遍历数组计算自然对数

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [10, 2]]);
$num->log($ndarray);
// returns array([[-0.69314718055994529, 0.0], [2.3025850929940459, 0.69314718055994529]])

log10


说明: 遍历数组计算以10为底的对数值

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[1e-1, 1], [10, 100]]);
$num->log10($ndarray);
// returns array([[-1.0, 0.0], [1.0, 2.0]])

sin


说明: 遍历数组计算正弦值

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->sin($ndarray);
// returns array([[0.47942553860420301, 0.8414709848078965], [0.0, 0.90929742682568171]])

cos


说明: 遍历数组计算余弦值

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->cos($ndarray);
// returns array([[0.87758256189037276, 0.54030230586813977], [1.0, -0.41614683654714241]])

tan


说明: 遍历数组计算正切值

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->tan($ndarray);
// returns array([[0.54630248984379048, 1.5574077246549023], [0.0, -2.1850398632615189]])

ceil


说明: 遍历数组计算向上取整

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->ceil($ndarray);
// returns array([[1.0, 1.0], [0.0, 2.0]])

floor


说明: 遍历数组计算向下取整

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, 1], [0, 2]]);
$num->floor($ndarray);
// returns array([[0.0, 1.0], [0.0, 2.0]])

fabs


说明: 遍历数组计算绝对值

参数

ndarray: Object

返回值

array: Array

范例
$ndarray = $num->array([[0.5, -1], [0, -2]]);
$num->fabs($ndarray);
// returns array([[0.0, 1.0], [0.0, 2.0]])
MIT License Copyright (c) 2016 phpnum Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

PHP科学计算扩展 A PHP extension for scientific computing 展开 收起
C
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/astraeux/phpnum.git
git@gitee.com:astraeux/phpnum.git
astraeux
phpnum
phpnum
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891