更多Pythonic的做法是什么?
min_odds = np.arange( 1.05, 2.0, 0.01 )
min_odds = min_odds.reshape( len( min_ods ), -1 )
代码创建一个形状的ndarray(95,)并将其转换为shape(95,1)。
另外,为什么numpy有时会创建一个大小为(95,)的数组,并且最后一个空白是空白的?
答案 0 :(得分:4)
我经常使用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)
区分开来。)
答案 1 :(得分:3)
如果您愿意,可以使用np.newaxis
(这只是None
的精美别名)切片:
>>> np.arange( 1.05, 2.0, 0.01 )[:,np.newaxis].shape
(95, 1)
如果您更喜欢自己所拥有的内容,我将摆脱-1
并使用1
(除非您希望您的用户必须查找{ {1}}应该像我刚才那样......)。
-1
至于你的第二个问题,
"为什么numpy有时会创建一个大小为(95,)的数组,并且最后一个空白是空白的?"
我并非100%确定我明白你的要求。 >>> arr = np.arange( 1.05, 2.0, 0.01 )
>>> arr = arr.reshape(len(arr), 1)
>>> arr.shape
(95, 1)
是ndarray.shape
。具有单个元素的字符串表示的元组看起来像tuple
。
另请注意以下关于在这种情况下更喜欢(something,)
到np.linspace
的评论。