私はMatlabユーザであり、Pythonに移行しようとしています。私はde2bi
関数の最小限の例(Matlabで以前に持っていたPythonの十進数を右のmsbのようにバイナリに変換する)を記述しようとしました。しかし、私は愚かな配列と混同しています。整数と配列入力にnumpy配列を使用する
Pythonコード:
import numpy as np
def de2bi(d, n)
d = np.array(d)
power = 2**np.arange(n)
d = d * np.ones((1,n))
b = np.floor((d%(2*power))/power)
return b
Pythonの出力:
>>> print(de2bi(13,8))
[[ 1. 0. 1. 1. 0. 0. 0. 0.]]
print(de2bi([13,15],8)) #This line fails
MATLABコード:
function b = d2b(d, n)
d = d(:);
power = ones(length(d), 1)*(2.^(0 : n-1));
d = d * ones(1, n);
b = floor(rem(d, 2*power)./power);
end
Matlabの出力:
>> d2b(13,8)
ans =
1 0 1 1 0 0 0 0
>> d2b([13,15],8)
ans =
1 0 1 1 0 0 0 0
1 1 1 1 0 0 0 0
Matlabコードは整数入力と整数配列の両方で動作しています。しかし、Pythonコードは整数入力でも動作しますが、配列では失敗します。整数配列と整数配列の両方をPythonで自動的に管理する方法は?それは非常に簡単な質問かもしれませんが、私を許してください。しかし、私はPythonで非常に初心者です。
ありがとうございます。
「flipud」の使用は面白く見えます。あなたは2dの配列を生成するために放送を利用して、matlabのようなnumpyの電源ラインを書くことができるはずです。 – hpaulj
@hpaulj問題は、整数入力を使用しようとすると、Pythonは[x]のようなリストに変換せず、[x、y]の[[x、y]]のようなリストのリストに変わります私は手動でそれを変換します。私はxと[x]、[y]の[x、y]については[x]を得る必要があると思うが、matlabのようにコードの数行でこの簡単なステップを管理する方法を知らない。 – pythoner