我一直無法在其他地方找到答案。1D Numpy陣列相當於先前,當前和以下元素的壓縮
對於一維numpy的隨機數組,例如a = np.random.rand(10)
,我想對每個包含它的每個相鄰元素(即前一個和後一個元素)的元素執行一個操作。所以,像
write = []
for previous_item, current_item, next_item in zip(a,a[1::],a[2::]):
write += operation_on(previous_item, current_item, next_item)
但是當我嘗試用numpy的陣列上的那些片商要做到這一點,它告訴我,a[1::]
等是浮動。是否有一個Numpy-Array等效於壓縮數組中的相鄰元素?
這裏是什麼,我不能去上班一個簡單的版本:
from random import randint
import math
import numpy as np
size = 3
def logistic(x,b):
return b*x*(1-x)
def scheme(l,c,r,strength,b):
print('neighborhood: ',l,c,r)
new_center = (1-strength)*logistic(c,b)+(strength/2)*(logistic(r,b) + logistic(l,b))
return new_center
def eSimple(c,l=None,r=None):
return c
cml = np.random.rand(size**2)
def evolve(cml, r):
# encode all
cml = np.vectorize(eSimple)(cml[:-2], cml[1:-1], cml[2:])
cml = np.vectorize(scheme)(cml[:-2], cml[1:-1], cml[2:], 0.5, r)
for r in np.arange(3.6, 4.0, 0.05):
evolve(cml,r)
print(cml)
出於某種原因,儘管它正確生成的街區,cml
僅僅是增加其值由一個非常小的(〜1E-6 )從每個步驟的初始隨機值開始計算。
我錯過了什麼?
若本只適用於一維numpy數組? –
我試過你的代碼,如果我爲operation_on插入一些東西,它對我有用,雖然結果有點無聊(寫入被強制爲一個空數組,並且將一個標量添加到一個空數組並沒有多大作用) –
@ sphericalcowboy I don真的不介意 - 我只想要一種方法來做到這一點。我想使用一維Numpy數組,而不是一個列表,但就目前而言,我只能找出一種方法來完成列表。 –