1

matlab がないため、matlab コードを python に変換しようとしています。私が見つけられなかった次の関数のpythonの同等物を親切に教えていただければ幸いです:

letter2number_map('A') = 1;
number2letter_map(1) = 'A';
str2num()

strcmp()
trace()
eye()
getenv('STRING')

[MI_true, ~, ~] = function() What does ~ mean?
mslice
ones()

平素は格別のお引き立てを賜り、誠にありがとうございます。

4

2 に答える 2

3

私は実際にはmatlabを知りませんが、それらのいくつかに答えることができます(numpyがnpとしてインポートされていると仮定します):

letter2number_map('A') = 1;  -> equivalent to a dictionary:  {'A':1}    
number2letter_map(1) = 'A';  -> equivalent to a dictionary:  {1:'A'}

str2num() -> maybe float(), although a look at the docs makes 
             it look more like eval -- Yuck. 
             (ast.literal_eval might be closest)
strcmp()  -> I assume a simple string comparison works here.  
             e.g. strcmp(a,b) -> a == b
trace()   -> np.trace()    #sum of the diagonal
eye()     -> np.eye()      #identity matrix (all zeros, but 1's on diagonal)
getenv('STRING')  -> os.environ['STRING'] (with os imported of course)
[MI_true, ~, ~] = function() -> Probably:  MI_true,_,_ = function()  
                                although the underscores could be any  
                                variable name you wanted. 
                                (Thanks Amro for providing this one)
mslice    -> ??? (can't even find documentation for that one)
ones()    -> np.ones()     #matrix/array of all 1's
于 2012-07-26T17:44:54.247 に答える
2

文字から数字への変換:ord("a") = 97

数字から文字への変換:chr(97) = 'a'

(小文字の場合は 96 を引き、大文字の場合は 64 を引きます。)

文字列を int に解析します。int("523") = 523

文字列の比較 (大文字と小文字を区別):"Hello"=="Hello" = True

大文字小文字を区別しません:"Hello".lower() == "hElLo".lower() = True

ones():[1]*ARRAY_SIZE

恒等マトリックス:[[int(x==y) for x in range(5)] for y in range(5)]

2 次元配列を作成するには、numpyを使用する必要があります。

編集:

または、次のように 5x5 の 2 次元配列を作成できます。[[1 for x in range(5)] for y in range(5)]

于 2012-07-26T17:41:13.613 に答える