3
有沒有辦法從一維數組中分割零維數組?如何在numpy中從一維數組中提取零維片
例如,如果我有一個N維ndarray
arr
,arr[0]
返回一個(N-1)維ndarray
。
但是,如果我有一個一維ndarray
x
,x[0]
不返回一個0維ndarray,而是numpy.int64
,(如果x
包含int64
S)。
最少例如:
def increment(zero_d_array):
zero_d_array[...] = zero_d_array + 1
counter = numpy.array(0) # a zero-dimensional array containing scalar 0
increment(counter) # success; counter is now 1
counters = numpy.zeros(3, dtype=int) # [0, 0, 0]
increment(counter[1]) # fails; counter[1] is a numpy.int64, not a 0-D array
我實現上述將與increment(counter[1:2])
工作,但這只是因爲increment()
發生與兩個0-d和1-d的輸入工作。並非所有功能都會如此靈活。
我不知道有一種方法。 Zero-D數組在Numpy中有點古怪。你是否有理由需要這樣做? – BrenBarn 2014-10-10 17:42:11
我經常發現zero-d數組是一種有用的方法,它具有「裝箱」的基元,就像一個int,我可以傳遞給一個函數,讓它在原地進行修改(無法用純整數進行修改)。正如我在問題中提到的那樣,顯然有一些解決方法,比如使用大小爲1的1-D切片,但這些更加冗長。 – SuperElectric 2014-10-10 17:48:06
是的,但問題是你需要能夠通過切片得到它們嗎?如果你只想保持一個零d的櫃檯,你可以按照你明確的創建它的方式來做。所以我的意思是,你實際上在做什麼,這使得你想要一般地分割和增加任何維度的數組,而不是僅僅讓你的計數器增加它? – BrenBarn 2014-10-10 17:51:44