arrays - python:如何在循环中在numpy数组中插入元素
问题描述
我有以下格式的字典:
{1: 7, 2: 1, 4: 2, 5: 1, ...}
字典可能非常大,所以我决定使用numpy
库来更有效地处理向量。
现在我需要将上述字典中的值numpy
插入到索引处的向量(一维数组)中key
。所以天真地尝试了以下方法:
import numpy as np
d = {1: 7, 2: 1, 4: 2, 5: 1}
T = np.zeros(shape=(n), dtype=np.int16)
for k, v in d.items():
N = np.insert(T, k, v)
print(N)
但是insert
方法总是返回数组,并在我的示例中new
覆盖。N
那么改变数组元素的正确方法是什么,就像我在 C 中所做的那样,例如T[0] = 1
.
貌似numpy
不允许这样?
谢谢。
更新 正如 Divakar 所建议的,解决方案是一次分配多个值:
T[list(d.keys())] = list(d.values())
这不需要循环。
解决方案
Innumpy
np.insert
通过拆分原始数组并在中间某处插入一个或多个值来创建一个新数组。
In [193]: arr = np.arange(6)
In [194]: arr
Out[194]: array([0, 1, 2, 3, 4, 5])
In [195]: np.insert(arr, 2, 100)
Out[195]: array([ 0, 1, 100, 2, 3, 4, 5])
有时人们谈论向数组添加值,但 `+' 是元素数字加法
In [196]: arr + 10
Out[196]: array([10, 11, 12, 13, 14, 15])
In [197]: 'one '+'two' # string 'addition'
Out[197]: 'one two'
“分配一个值”可能是您想要做的最清晰的描述。你想修改原始数组的一个元素,而不改变它的大小。
In [198]: arr[3] = 100
In [199]: arr
Out[199]: array([ 0, 1, 2, 100, 4, 5])
@Divakar 的想法一次分配多个值:
In [200]: arr[[1,2]] = [100,200]
In [201]: arr
Out[201]: array([ 0, 100, 200, 100, 4, 5])
推荐阅读
- android - Android 材质日期选择器
- angular - Ionic v5 动画在 android 上调用了两次
- colors - 在 Magick.NET 中更改图像颜色
- python - Python中日期范围的联合
- angular - Angular Interceptor URL 未使用新 URL 更新,附加到原始 URL
- python - 重新启动 Visual Studio Code,现在我的代码不起作用
- raspberry-pi - 训练自定义模型时如何使用edgetpu?
- python - 条件语句不检查列表中的实际条件
- angular - Angular12 - 拦截 graphql HTTP 请求和响应
- python - 获取组范围内所有值的计数的有效方法