Equivalent code in Python when appending arrays
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello everyone,
I've got a problem when trying to translate this code in MATLAB to Python. The problem happened when I tried to append items to list.
dict{1} = [ 24 13; 8 21 ];
dict{2} = [ 2 17; 13 21 ];
dict{3} = [ 17 1; 21 12; 22 15; 21 24; 18 29 ];
dict{4} = [ 24 3; 22 23; 11 25 ];
dict{5} = [ 3 12; 26 18 ];
result = cell(size(dict));
dk = zeros(0,2); rk = {};
for k=1:length(result) % working down, construct sequentially
rp = rk; dp = dk; dk = dict{k}; % bookkeeping and update
rk = num2cell(dk,2); % split rows as cell
[b,loc] = ismember(dk(:,1),dp(:,2)); % check for matching
p = rp(loc(b)); % build the path using for-loop instead of ARRAYFUN
n = dk(b,2);
for j=1:length(p)
p{j} = [p{j} n(j)];
end
rk(b) = p;
result{k} = rk; % assign
end
In Python:
list = {}
list[0] = np.array([[24, 13], [8, 21]])
list[1] = np.array([[2, 17], [13, 21]])
list[2] = np.array([[17, 1], [21, 12], [22, 15], [21, 24], [18, 29]])
list[3] = np.array([[24, 3], [22, 23], [11, 25]])
list[4] = np.array([[3, 12], [26, 18]])
dk = np.zeros((0,2))
rk = {}
result = {}
for k in range(len(list)):
rp = rk
dp = dk
dk = list[k]
rk = num2cell(dk)
[b, loc] = ismember(dk[...,0], dp[...,1])
if k > 0:
p = rp_array[loc]
n = dk[b, 1]
p = np.column_stack((p, n))
rk[b] = p
result[k] = rk
The error is: shape mismatch: value array of shape (1,3) could not be broadcast to indexing result of shape (1,2), which is rk[b] = p. So can anyone please help me find the equivalent code to this?
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Call Python from MATLAB finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!