如何在Ironpython中使用矩阵(numpy)

欢迎加入BIM行业开发交流1群 群号:711844216

一、背景

小伙伴们在ironpython中可能有需要需要使用矩阵运算。在python中,大家知道我们可以使用numpy库,那么在ironpython中如何使用呢?

二、思路

思路1.在ironpython中通过numpy使用矩阵运算。

大家可以参考这篇文章:
https://stackoverflow.com/questions/29397540/how-to-install-numpy-and-scipy-for-ironpython27-old-method-doenst-work
但是,我们注意到对于ironpython中使用numpy,Jonathan March这样说道:
Microsoft stopped work on the IronPython project in 2012 in favor of supporting standard CPython. Those archived versions of numpy and scipy were built in 2011 (so contain no newer features or fixes), and are 32-bit-only. We do not plan to update them in any way.
翻译过来就是:
微软在2012年停止了IronPython项目的工作,转而支持标准的CPython。那些numpy和scipy的存档版本是在2011年构建的(因此不包含更新的功能或修复),并且只有32位版本。我们不打算以任何方式更新它们。
重点1:2011年构建的,已经很久没有更新了
重点2:只有32位版本(这里笔者没有测试,大家在64位上可以运行的话,可以评论中告诉我)
所以,可以分析出,这种方法对于当前(2019了),并不友好。笔者通过另外一种方法,同样实现了在Ironpython中使用矩阵,请看思路2.

思路2.在ironpython中通过Mapack使用矩阵运算

Mapack是IronPython官方推荐的一个矩阵运算库,详情参看下面网址连接:
http://opensimulator.org/git/opensim-libs-save/IronPython/IronPython-1.1.1/Tutorial/Tutorial.htm
网址中的,TUTORIAL 1 .Exercise 3 Task 2就介绍了Mapack的基本操作,
Task 2: Mapack - Loading the .NET libraries - AddReferenceToFile
笔者在代码中,也会有一个简单的介绍。
由于这个网站中提供的Mapack.dll下载地址不再有效,小伙伴们可以直接进Q群711844216获取

三、操作示例(使用Mapack)

#支持中文
# -*- coding: utf-8 -*- 
import clr
#小伙伴们把博主给你们的Mapack.dll放入一个路径,然后将这个路径导入
clr.AddReferenceToFileAndPath("E:\mac\Mapack.dll")
#然后导入这个dll中的所有函数
from Mapack import *
#构建一个2行2列的矩阵
m = Matrix(2, 2)
#值如下
'''
| 1 | 2 |
| 3 | 4 |
'''
m[0,0]=1
m[0,1]=2
m[1,0]=3
m[1,1]=4
#构建一个2行1列的矩阵
n = Matrix(2,1)
#值如下
'''
| 1 | 
| 2 | 
'''
n[0,0] = 1
n[1,0] = 2
#进行乘法运算,将结果存入d中
d=m*n;
print d

可以得到结果
| 5 |
| 11 |

方法小结:
加减法使用:m+n,m-n
乘除法使用:m*n,m/n
与代数的运算使用:m*3,m/3
转置使用:m.Transpose()

四、注意事项

矩阵的运算,两个运算矩阵的写法一定要匹配,相信小伙伴们在高中,大学应该都掌握的不错了,剩下的就是用上面的这些方法使用了。

你可能感兴趣的:(Ironpython)