np.arange然后重塑

时间:2014-10-01 05:12:56

标签: python numpy

更多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,)的数组,并且最后一个空白是空白的?

2 个答案:

答案 0 :(得分:4)

我经常使用arangereshape生成测试数组,例如

 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的评论。