什麼是更加Pythonic的做法?np.arange後面是整形
min_odds = np.arange(1.05, 2.0, 0.01)
min_odds = min_odds.reshape(len(min_ods), -1)
該代碼創建一個形狀(95,)的ndarray並將其轉換爲形狀(95,1)。
另外,爲什麼numpy有時創建一個空白最後維度的大小爲(95,)的數組?
什麼是更加Pythonic的做法?np.arange後面是整形
min_odds = np.arange(1.05, 2.0, 0.01)
min_odds = min_odds.reshape(len(min_ods), -1)
該代碼創建一個形狀(95,)的ndarray並將其轉換爲形狀(95,1)。
另外,爲什麼numpy有時創建一個空白最後維度的大小爲(95,)的數組?
你可以用np.newaxis
切片(這是None
只是一個花哨的別名),如果你想:
>>> np.arange(1.05, 2.0, 0.01)[:,np.newaxis].shape
(95, 1)
如果你喜歡你有什麼,我會擺脫-1
和只需使用1
(除非您希望用戶必須查找-1
應該表示的意思,就像我剛纔所做的那樣)。
>>> arr = np.arange(1.05, 2.0, 0.01)
>>> arr = arr.reshape(len(arr), 1)
>>> arr.shape
(95, 1)
關於你的第二個問題,
「爲什麼numpy的,有時一個空白的最後一個維度創建一個大小爲(95)的陣列?」
我不是100%確定我明白你在問什麼。 ndarray.shape
是 a tuple
。具有單個元素的字符串表示的元組看起來像(something,)
。
此外,請注意以下有關在此情況下優先選擇np.linspace
到np.arange
的註釋。
我經常跟着arange
與reshape
生成測試數組,例如,
np.arange(12).reshape(3,4)
使用-1
避免服用len()
,例如
np.arange(10).reshape(-1,1).shape # (10, 1)
arange
總是返回1d數組。 numpy
數組可以有任意數量的維度,包括0.形狀表示爲一個元組。 (10,)
只是一個元組元組。 (需要將其與(10)
區分開來)。
'(95,)'是1d數組的形狀(想'矢量')。 '(95,1)'是二維數組的形狀。 '(1,95)'是另一種2D形狀。 'arange'創建一個1d。 – hpaulj 2014-10-01 05:36:38