提问人:zangmolk 提问时间:11/8/2023 最后编辑:hpauljzangmolk 更新时间:11/9/2023 访问量:54
使用 append 的 numpy narray 赋值
numpy narray assignment with using append
问:
numpy ndarray 赋值
你好
有没有更好的附加使用: 此代码的输出正常。但我想要比它更好的编码。
import numpy as np
a=np.array([[],[],[]])
b=np.array([1,2,3])
a=np.append(a,[[b[0]],[b[1]],[b[2]]] , axis=1)
结果:
output=[[1],[2],[3]]
答:
0赞
Sup
11/8/2023
#1
我看不出数组的必要性 如果你只想让每个元素作为 numpy 数组的元素作为 numpy 数组的元素,你可以执行以下操作;a
b
import numpy as np
b=np.array([1,2,3])
output = np.array([np.array([x]) for x in b])
否则作为列表列表,
output = [[x] for x in b]
评论
0赞
zangmolk
11/9/2023
对于像“a”这样的数组,它是必需的。因为“b”数组在循环中多次生成,我想在每一步以数组“a”的格式保存其值。
0赞
hpaulj
11/9/2023
#2
您的代码:
In [189]: a=np.array([[],[],[]])
...: b=np.array([1,2,3])
...:
...: a1=np.append(a,[[b[0]],[b[1]],[b[2]]] , axis=1)
In [190]: a.shape, b.shape, a1.shape
Out[190]: ((3, 0), (3,), (3, 1))
In [191]: a1
Out[191]:
array([[1.],
[2.],
[3.]])
因此,要连接 (3,0) 和 (3,),您必须首先更改为 (3,1):b
In [192]: np.array([[b[0]],[b[1]],[b[2]]])
Out[192]:
array([[1],
[2],
[3]])
但如果这是你的目标,为什么还要使用和?我怀疑你在模仿列表循环。不要!a
append
append
使用 a 或 '.reshape(3,1) 制作 (3,1) 更容易:b
newaxis
In [193]: b[:,None]
Out[193]:
array([[1],
[2],
[3]])
np.append
循环中是个坏主意。它很慢,用每个附加物制作一个全新的数组,以及所有随附的副本。
评论