2016-07-09 18 views
0

Ich kenne Erstellen MxN Matrizen in Python NumPy wie:beliebige Matrix oder Array-Größe in Swift

In [1]: import numpy as np 

In [2]: np.zeros((10,5)) 
Out[2]: 
array([[ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.]]) 

In Swift können SIMD kleine Matrizen erzeugen und Operationen an ihnen auszuführen (siehe unten), aber es scheint auf eine maximale Größe einer 4x4-Matrix beschränkt zu sein.

Gibt es eine Möglichkeit, eine willkürlich große Matrix von MxN Dimensionen in Swift zu definieren und Operationen auf dieser Matrix durchzuführen?

Antwort

0

Wenn von "Matrix", Sie einen "Array von Arrays" bedeuten, dann kann man die folgende Syntax:

var matrix = Array(count: 10, repeatedValue: Array(count: 5, repeatedValue: 0.0)) 

Dies erzeugt eine 10 x 5-Matrix von Nullen.

+0

Das erstellt zwar eine MxN-Matrix, aber es können keine Vorgänge an die Werte innerhalb der Matrix gesendet werden. In meinem Beispiel, wo ich die Matrix mit SIMD deklariert habe, könnte ich sie mit 9 multiplizieren; Diese Operation funktioniert nicht mit einem Array-Auflistungstyp. – wigging

+0

Wie ich schon sagte, es erzeugt ein Array von Arrays, keine Matrix im mathematischen Sinne. Ähnlich wie Sie NumPy für Python benötigen, benötigen Sie eine ähnliche wissenschaftliche Bibliothek in Swift. Eine, die ich fand, war [Swift Matrix Library] (https://github.com/stsievert/swix). Scheint von NumPy inspiriert zu werden –

+0

Ok, ich schaue mir Swift Matrix an. Warum erlaubt SIMD nur Matrix-Dimensionen bis 4x4? – wigging