在Python(Numpy)中如何强制至少N个数字?

huangapple go评论70阅读模式
英文:

How to force at least N digits in Python (Numpy)

问题

我要翻译的内容:

假设我们有一个任意的整数,x。我想将这个数字转换为一个字符串;使用 str(x) 很容易实现。

在numpy中,将数字转换为除了十进制以外的其他进制也很容易,使用 np.base_repr(x, base)。但是,如果我想要至少有 N 位数字,该怎么办?例如,如果数字是 0base_repr 将只输出 0。但是如果我想要至少5位数字,例如 00000 呢?

我尝试了 np.base_repr 函数中的填充设置,但似乎它会左侧附加额外的零,而不是添加它们以适应。例如,np.base_repr(2, base=2, padding=3) 会产生 00010,而不是期望的 010

我知道这可以手动实现。我们只需在字符串上附加零(左侧附加)直到长度达到 N。但是在numpy中,或者其他一些流行的库中,是否有一个库函数可以实现这个功能?

英文:

Let's say we have an arbitrary integer, x. I want to convert this number to a string; which is pretty easy using str(x).

Converting the number to a different base other than base 10 can be done easily in numpy using np.base_repr(x, base). But how do I force this to have at least N digits; if the number is 0 for example, base_repr will output just 0. But what if I want at least 5 digits, 00000?

I tried the padding setting in the np.base_repr function, but this seems to left-append extra zeroes, instead of adding them to fit. For example, np.base_repr(2, base=2, padding=3) yields 00010 instead of the desired 010.

I know this is possible manually. We can just append zeroes to our string (left-append) until the length is N. But is there a library function in numpy, or some other popular library, that does the trick?

答案1

得分: 1

f"{2:03b}"  # 或者:
f"{2:b}".zfill(3)
## '010'

b 代表二进制
f 代表浮点数
:3 强制使用3个位置,但填充会用空格。
:03 强制用零填充。

f"{2:03}"
## '002'

对于不同的进制,可以使用:

np.base_repr(2, base=2).zfill(3)

或者:

f"{np.base_repr(2, base=3):03}"
英文:

Use f-string abilities or .zfill() string method for this:

f"{2:03b}" # or:
f"{2:b}".zfill(3)
## '010'

b is for binary
f would be for float
:3 would enforce 3 positions, however, padding would be with .
:03 enforces padding with zeros.

f"{2:03}"
## '002'

For different bases use:

np.base_repr(2, base=2).zfill(3)

or:

f"{np.base_repr(2, base=3):03}"

huangapple
  • 本文由 发表于 2023年5月13日 13:02:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/76241148.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定