使用 append 的 numpy narray 赋值

numpy narray assignment with using append

提问人:zangmolk 提问时间:11/8/2023 最后编辑:hpauljzangmolk 更新时间:11/9/2023 访问量:54

问:

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]]
python numpy 多维数组 追加 变量赋值

评论

0赞 jared 11/8/2023
这里的目标是什么?

答:

0赞 Sup 11/8/2023 #1

我看不出数组的必要性 如果你只想让每个元素作为 numpy 数组的元素作为 numpy 数组的元素,你可以执行以下操作;ab

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

但如果这是你的目标,为什么还要使用和?我怀疑你在模仿列表循环。不要!aappendappend

使用 a 或 '.reshape(3,1) 制作 (3,1) 更容易:bnewaxis

In [193]: b[:,None]
Out[193]: 
array([[1],
       [2],
       [3]])

np.append循环中是个坏主意。它很慢,用每个附加物制作一个全新的数组,以及所有随附的副本。