更新numpy.ndarray中的值

时间:2019-03-27 19:29:07

标签: python numpy

我正在尝试更新数组中的元素。如果我有数组,请说:

[[0, 0],
 [0, 0]]
据我所知,

例如更新。第一个元素为0.5,是

array[0,0] = 0.5

但是,当我打印数组时,内容没有改变。我在堆栈溢出中读到了一些有关创建数组副本的内容,但我不知道这是否适用。

任何帮助都会很棒

4 个答案:

答案 0 :(得分:1)

您的问题是您的数组是整数值(因为您使用整数对其进行了初始化),并且在向其写入浮点数时将其舍入为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)

答案 1 :(得分:0)

该数组的数据类型自动设置为int,当int为0时为0.5。

# 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. ]])

答案 2 :(得分: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

答案 3 :(得分:0)

在将值更新为float之前,您需要更改numpy数组的数据类型

ON_MUTED_CHANGED:
  {"is_muted": false}
ON_START_FINISHED
ON_MEDIA_STATE_IDLE

ON_CONVERSATION_TURN_STARTED
ON_END_OF_UTTERANCE
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
  {"text": "what time is it"}
ON_RESPONDING_STARTED:
  {"is_error_response": false}
ON_RESPONDING_FINISHED
ON_CONVERSATION_TURN_FINISHED:
  {"with_follow_on_turn": false}


ON_CONVERSATION_TURN_STARTED
ON_END_OF_UTTERANCE
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
  {"text": "what's the weather like"}
ON_RESPONDING_STARTED:
  {"is_error_response": false}
ON_RESPONDING_FINISHED
ON_CONVERSATION_TURN_FINISHED:
  {"with_follow_on_turn": false}


    ON_CONVERSATION_TURN_STARTED
ON_END_OF_UTTERANCE
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
  {"text": "play Muse on shield"}
Segmentation fault
(env) pi@raspberrypi:~ $

这会给你

import numpy as np

a = [[0,0],[0,0]]
a = np.array(a)
a = a.astype('float64')
a[0,0] = 0.5
print(a)