【发布时间】:2019-08-07 01:59:19
【问题描述】:
我有一个 1 和 0 的 Pandas 数据框转换为一个数组: [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
我正在使用以下函数来修改数组:
def regressor(x, param):
new_array = x
for i in range(len(new_array)):
length = len(new_array)
current = new_array[(length-i)-1]
previous = new_array[(length-i)-2]
if current != 0:
if previous == 0:
new_array[(length-i)-2] = current*param
return new_array
但是,我的数组仍然没有改变。 new_array[(length-i)-2] 似乎并没有真正修改数组的那个元素。
谁能告诉我我错过了什么? 谢谢
更新:我的问题通过将 DataFrame 转换为 pandas.Series 然后将其转换为函数内的列表来解决。
【问题讨论】:
-
也许你的“参数”是0?我已经测试了你的代码,列表确实改变了参数!= 0。如果你在函数内打印(new_array)你可以看到。或者你在函数之外做错了什么
-
不,它适用于普通的 python 数组,但在使用 Numpy 数组时保持不变
-
你必须向我们展示调用函数的代码。什么是numpy数组?是 x 吗?为什么需要 new_array = x?在函数内部没有任何问题,可能问题出在你调用它的位置。
-
new_array = regressor(current_array, 0.9) 为了我自己的可读性,我只是在函数中将它命名为 new_array
-
这确实没有什么问题。如果你做 new_array = regressor(current_array, 0.9) 和 print(new_array) 它会给你改变的数组,不管它是否是 numpy.array 。你是如何定义变量 new_array 和 current_array 的?
标签: python arrays list numpy numpy-ndarray