【问题标题】:Why do the values in the for loop not correspond to those in Numpys arange and linspace?为什么 for 循环中的值与 Numpy arange 和 linspace 中的值不对应?
【发布时间】:2020-08-17 05:14:57
【问题描述】:

我只是尝试遍历一个序列,但值总是略有变化,只有当您尝试使用适当的名称保存文件时才会注意到这一点。我从 Numpys arange 开始,但由于文档说如果步骤不是整数,值可能会有所不同,所以我按照建议切换到 linspace。

import numpy as np
seq = np.linspace(0.01, 0.09,9)
seq2 = ([])
for i in seq:
    seq2.append(i)

序列为:array([0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09])
Seq2 为:[0.01, 0.02, 0.03, 0.04, 0.05, 0.060000000000000005, 0.069999999999999999, 0.08, 0.09]
有人可以向我解释这个问题是什么吗?
提前感谢
我正在研究 Python 3.6.7 和 Numpy 1.14

【问题讨论】:

标签: python-3.x numpy


【解决方案1】:

TL/DR:这是一个显示问题,numpy.ndarray 以不同方式显示内容 - 你可以 customize the printing

import numpy as np
import sys
np.set_printoptions(precision=20)
seq = np.linspace(0.01, 0.09,9)
print(seq)

[0.01                 0.02                 0.03
 0.04                 0.05                 0.060000000000000005
 0.06999999999999999  0.08                 0.09                ]

How to pretty-print a numpy.array without scientific notation and with given precision?

你仍然有浮动,“Is floating point math broken?”适用:

import numpy as np
seq = np.linspace(0.01, 0.09,9)
seq2 = ([])
for i in seq:
    seq2.append(i)

print(*seq)
print(*seq2)

输出:

0.01 0.02 0.03 0.04 0.05 0.060000000000000005 0.06999999999999999 0.08 0.09
0.01 0.02 0.03 0.04 0.05 0.060000000000000005 0.06999999999999999 0.08 0.09

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多