这个有点难以解释,所以让我通过一个例子向你展示我所指的内容:
from statistics import mean
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
import random
# xs = np.array([1,2,3,4,5,6], dtype=np.float64)
# ys = np.array([5,4,6,5,6,7], dtype=np.float64)
def create_dataset(hm, variance, step=2, correlation=False):
val = 1
ys = [] # empty list
for i in range(hm):
y = val + random.randrange(-variance, variance)
ys.append(y)
if correlation and correlation == 'pos':
val += step
elif correlation and correlation == 'neg':
val -= step
xs = [i for i in range(len(ys))]
return np.array(xs, dtype=np.float64), np.array(ys, dtype=np.float64)
现在让我们创建一个数据集:
xs, ys = create_dataset(30, 12, 2, correlation='pos')
print("X series: %s\n\nY series: %s" % (xs, ys))
示例输出:
X series: [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.]
Y series: [ 1. -6. 10. 9. -1. 13. 24. 21. 14. 12. 17. 29. 23. 37. 32.
36. 25. 27. 27. 47. 36. 32. 51. 37. 50. 47. 61. 45. 65. 59.]
来自 OOP 背景,我对此感到有些困惑:
if correlation and correlation == 'pos':
val += step
如您所见,val在 y已分配之后发生了变化。但它似乎y仍然影响后分配。因此,这看起来好像在内存中保存了各种方程引用,并且结果可以通过更改其任何运算符而受到影响。
为什么以及如何在 python 中做到这一点?在 C# 或 Java 中,一旦分配原始浮点数或整数,除非直接引用它,否则不会更改。当您使用对象浮点数或整数时,我认为这是可能的,但前提是将另一个变量分配给相同的引用。将输入更改为先验方程也不会这样做 AFAIK。
无论如何,似乎发生了一些我不熟悉的与 python 相关的事情。
繁花不似锦
相关分类