overflow33の日記

python 機械学習 系の記事を書いて行きたい所存

C Matlab python での 配列 比較

1次元配列の書き方

C言語

int i;
int x[11]={0};
for(i=0; i<=10; i++;){
    x[i] = i;
}

Matlab

x = zeros(10)
for i = 1: 11
    x(i) = i - 1
end

python (list)

x = [0]*11
for i in range(11):
    x[i] = i

python (numpy)

import numpy as np
x = np.zeros(11)
for i in range(11):
    x[i] = i

xは < class 'list' > 型ではなく、 < class 'numpy.ndarray' > 型になる。


いずれも、xに 0 から 10 までの整数を配列として代入するプログラムである。
動作を高速化するため、先に配列分のメモリを確保する書き方になっている。


Matlabpythonでは、動作が遅くなるが、順次メモリを確保させる書き方ができる。
xの要素が一つ増えるたびにメモリ確保が行われ、動作が遅くなるので注意。

Matlab

for i = 1: 11
    x(i) = i - 1
end

python (list)

x = []
for i in range(11):
    x.append(i)

python (numpy)

import numpy as np
x = np.array([])
for i in range(11):
    x = np.append(x, i)

C言語でメモリを動的に確保するには、malloc.hを利用する必要がある。
pythonmatlabは楽でいいですね。