如何使用返回numpy 1D数组的函数填充numpy 2D数组

时间:2018-05-14 18:58:02

标签: python arrays numpy

我有像

这样的功能预测
def predictions(degree):
  some magic,
  return an np.ndarray([0..100])

我想将这个函数称为几个度数值,并用它来填充更大的np.ndarray(n = 2),用函数predictions的结果填充每一行。这似乎是一个简单的任务,但不知怎的,我不能让它工作。我试过

for deg in [1,2,4,8,10]:
   np.append(result, predictions(deg),axis=1)

结果为np.empty(100)。但是Singleton array array(1) cannot be considered a valid collection.

失败了

我无法得到fromfunction它仅适用于坐标元组,并且文档中不包含不规则的度数列表。

2 个答案:

答案 0 :(得分:2)

请不要使用np.ndarray,直到您年龄更大,更聪明!我无法在不重新阅读文档的情况下使用它。

arr1d = np.array([1,2,3,4,5])

是从数字列表构造1d数组的正确方法。

也不要使用np.append。我甚至不会添加更老,更聪明的'资格。它没有就地工作;在循环中使用时速度很慢。

从1d数组构建2数组的好方法是:

alist = []
for i in ....:
    alist.append(<alist or 1d array>)
arr = np.array(alist)

如果所有子列表都具有相同的大小,则arr应为2d数组。

这相当于从

构建二维数组
np.array([[1,2,3], [4,5,6]])

这是一个列表清单。

或列表理解:

np.array([predictions(i) for i in range(10)])

同样,predictions必须返回相同长度的数组或列表。

答案 1 :(得分:2)

viewtype1是numpy的无聊部分。在这里你事先知道形状

append

如果你想以某种方式存储学位,你可以使用自定义dtypes