更新numpy.ndarray中的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新numpy.ndarray中的值相关的知识,希望对你有一定的参考价值。
我正在尝试更新数组中的元素。如果我有一个数组说:
[[0, 0],
[0, 0]]
据我所知,更新方式如下。第一个元素为0.5,是
array[0,0] = 0.5
但是,当我打印数组时,内容不变。我在Stack Overflow上阅读了有关数组创建副本的一些内容,但我不知道这是否适用。
任何帮助都会很棒
答案
你的问题是你的数组是整数值的(因为你用整数初始化它),当你给它写一个浮点数时,它会四舍五入为0.如果你写的话可以检查是否是这种情况
array = np.array([[0, 0], [0, 0]])
array[0, 0] = 1.5
>>> array = array([[1, 0],
[0, 0]])
要获得预期的行为,请使用浮点数对其进行初始化
array = np.array([[0., 0.], [0., 0.]])
或明确指定dtype
array = np.array([[0, 0], [0, 0]], dtype=np.float32)
另一答案
数组的数据类型自动设置为int
,0.5,因为int
为0。
# For example:
In [12]: int(0.5)
Out[12]: 0
# To construct the array try:
array = np.array([[0.0,0.0],[0.0,0.0]])
# or:
array = np.array([[0,0],[0,0]], dtype=float)
然后:
In [9]: array[0,0]=0.5
In [10]: array
Out[10]:
array([[0.5, 0. ],
[0. , 0. ]])
另一答案
Python嵌套的list
对象不支持类似数组的索引。您只能使用一个值来索引列表
arr = [[0,0], [0,0]]
arr[0][0] = 0.5
arr # [[0.5, 0], [0, 0]]
要使用您在帖子中提到的那种索引,您必须使用numpy数组
import numpy as np
np_arr = np.array([[0,0], [0,0]], dtype=np.float32)
np_arr[0,0] = 0.5
另一答案
在将值更新为float之前,需要更改numpy数组的数据类型
import numpy as np
a = [[0,0],[0,0]]
a = np.array(a)
a = a.astype('float64')
a[0,0] = 0.5
print(a)
这会给你
[[0.5 0. ]
[0. 0. ]]
以上是关于更新numpy.ndarray中的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在给定索引列表的情况下有效地更新 numpy ndarray
对于非常大的元组/文件/数据库记录/numpy.ndarray,linux“更多”类似于python中的代码?