numpy - 如何在 numpy 数组的特定位置添加数字

标签 numpy

我想将某个数字(在本例中为 1)添加到下面指定的数组中的特定位置

array = np.zeros((1, 5))

如果我运行上面的代码,我会得到一个如下所示的数组

[0,0,0,0,0]

如何将整数 1 添加到该数组的特定位置?我知道你是否使用

np.add(array,1)

你会得到类似的东西

[1,1,1,1,1]

我应该做什么,我只想在 numpy 数组的特定位置添加 1,这样它看起来更像

[1,0,0,0,0] or [0,0,1,0,0]

最佳答案

这是 Numpy 中的一维数组:

>>> a1=np.zeros(5)
>>> a1[2]=1
>>> a1
array([0., 0., 1., 0., 0.])

这会创建一个二维数组,即使它只有一行:

>>> array = np.zeros((1, 5))
>>> array
array([[0., 0., 0., 0., 0.]])

如果您尝试以相同的方式分配,则会出现错误:

>>> array[2]=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 2 is out of bounds for axis 0 with size 1
或者,更令人困惑的是,如果您将其分配给单个元素,则对于 2D,Numpy 会假定默认轴并将分配该行中的所有值:

>>> array = np.zeros((1, 5))
>>> array[0]=3
>>> array
array([[3., 3., 3., 3., 3.]])

要分配给二维数组中的单个元素,您需要使用行索引和列索引:

>>> array[0,2]=1
>>> array
array([[0., 0., 1., 0., 0.]])

关于numpy - 如何在 numpy 数组的特定位置添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62617234/

相关文章:

python - 如何有效地将 numpy.int8 数组就地转换为值移位的 numpy.uint8 数组?

python - 在numpy数组中填写超出范围的部分

python - 计算每一行的大写字母

python - 高效计算点云的体素指数

python - 使用 Python 和 Pandas 拆分文本文件中的数据

python - 根据该点的值绘制一个非方阵

python - pd.read_csv 给了我 str 但需要 float

numpy - 将 2D reshape 为 4D 阵列

python - 如何在对数组应用花式索引过滤器的同时将数组的一列放入新数组中?

python - 将str转换为numpy.ndarray