将数组保存到列时出错

2024-10-02 22:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

dvbydt = np.full([3,N],0)
dvbydt[:,0] = np.array([-1.47813483e-03, -2.23682946e-03, -1.06122312e-05])

我的印象是,这会将第一列的整个内容保存为右侧有三个值的数组,但它仍然返回一个包含所有0的数组。我做错了什么?没有出现错误,它们具有相同的形状,但似乎没有任何内容保存到dvbydt阵列中。非常感谢您的帮助


Tags: 代码内容错误np数组arrayfull形状
1条回答
网友
1楼 · 发布于 2024-10-02 22:36:08

如果检查条目的类型,则它们是整数:

type(dvbydt[0][0])
# numpy.int32

所以它确实有效,它只是将它们近似为最接近的整数,即0

定义数组时,请使用0.0而不是0

N = 3
dvbydt = np.full([3,N],0.0)
dvbydt[:,0] = np.array([-1.47813483e-03, -2.23682946e-03, -1.06122312e-05])

dvbydt
# array([[-1.47813483e-03,  0.00000000e+00,  0.00000000e+00],
#       [-2.23682946e-03,  0.00000000e+00,  0.00000000e+00],
#       [-1.06122312e-05,  0.00000000e+00,  0.00000000e+00]])

或者,在数组参数中指定dtype

N = 3
dvbydt = np.full([3,N],0, dtype=float)
dvbydt[:,0] = np.array([-1.47813483e-03, -2.23682946e-03, -1.06122312e-05])

dvbydt
# array([[-1.47813483e-03,  0.00000000e+00,  0.00000000e+00],
#       [-2.23682946e-03,  0.00000000e+00,  0.00000000e+00],
#       [-1.06122312e-05,  0.00000000e+00,  0.00000000e+00]])

相关问题 更多 >