【发布时间】:2025-11-23 21:55:01
【问题描述】:
我是 Matlab 用户,正在尝试使用 Python。我尝试在 Python 中编写一个 de2bi 函数的最小示例(它将十进制转换为二进制为 right-msb),这是我之前在 Matlab 中使用的。但是,我对 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的使用看起来很有趣。您应该能够像 matlab 一样编写 numpy 电源线,利用广播来生成二维数组。 -
@hpaulj 问题是当我尝试使用整数输入 x python 不会将其转换为 [x] 之类的列表,并且数组会更改为 [[x,y] 之类的列表列表] 为 [x,y] 当我手动转换它时。我想我需要得到 x 的 [x] 和 [x,y] 的 [[x],[y]],但我不知道如何像在 matlab 中那样用几行代码来管理这个简单的步骤。跨度>
标签: python arrays matlab numpy