如何使它像这样,所以奇数索引将做(-),偶数索引将做(+),最大迭代是6。迭代1 + 10、迭代2 - 20、迭代3 + 30、迭代4 - 40、迭代5 + 50、迭代6 - 60
AA = np.array([[9.27914]+10,
[9.33246]-20,
[9.26303]+30,
[9.30597]-40,
[9.6594 ]+50,
[9.04283]-60,
[8.88866]+10,
[8.89956]-20])
预期结果:
AA=np.array([
[19.27914],
[-10.66754],
[39.26303],
[-30.69403],
[59.6594],
[-50.95717],
[18.88866],
[-11.10044],
])
我尝试使用此代码,但不工作
max_iter = 6
iter = 0
for i in range(len(AA)):
if i % 2 == 0:
AA[i][0] = AA[i][0] + (iter % max_iter)
else:
AA[i][0] = AA[i][0] - (iter % max_iter)
iter += 10
5条答案
按热度按时间nwlqm0z11#
这是numpy,不要循环,使用矢量代码。
模运算符(
%
)对于重新开始序列非常有用。输出:
使用的输入:
中间体:
hec6srdp2#
你们很亲密。只需要做三个小的改变。我在括号内添加了一个+1,为每个数组操作添加了 *10,并将iter += 10更改为array += 1
实际上,如果使用以下代码,可以删除if else语句并在一行中完成:
j8ag8udp3#
您遇到的根本问题是混淆了变量
iter
的含义。有时你似乎想成为10的倍数,有时是1到6之间的数字。让我们把它分离出来,稍微清理一下代码。给出:
然后我们可以:
获取:
或者如果你喜欢更接近你开始的东西:
p1tboqfb4#
试试这个:
注意:省略了最大迭代次数…我会尽快修好的。
relj7zay5#
我为你写了一个函数,没有循环,并给予你想要的结果。