繁体   English   中英

如何在Numpy中方便地将range(10)分配给形状为(10,1)的ndarray?

[英]How to assign range(10) to a ndarray which shape is (10, 1) conveniently in Numpy?

我尝试了这个:

import numpy as np
a = np.empty((1, 10, 1), np.int8)
a[0] = range(10)

它引发错误: ValueError: could not broadcast input array from shape (10) into shape (10,1)

您可以执行a[0, :, 0] = range(10)

在这种情况下可以使用的几个选项:

a[0, :, 0] = np.arange(10)  # assign to 1D slice

a[0].flat = range(10)  # assign to flattened 2D slice

a[0] = np.arange(10).reshape(10, 1)  # bring the rigth side into correct shape

a[0] = np.arange(10)[:, np.newaxis]  # bring the rigth side into correct shape

注意使用np.arange代替range 前者直接创建具有值序列的ndarray,而后者创建需要迭代的可迭代对象,以进行赋值。

在分配flat时,使用range是有意义的,因为两者都是迭代器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM