在numpy数组中创建numpy数组

时间:2018-04-08 17:50:37

标签: python numpy

我想在numpy数组中创建一个numpy数组。如果我用普通的python做它像

这样的东西
a = [[1,2], [3,4]]

a[0][1] = [1,1,1]

print a

结果是[[1,[1,1,1]],[3,4]]

如何使用numpy数组实现相同的目标?我的代码是:

a = np.array([(1, 2, 3),(4, 5, 6)])
b = np.array([1,1,1])

a[0][1] = b

2 个答案:

答案 0 :(得分:1)

据我所知,你不能这样做。 Numpy数组不能具有不同形状的条目。您制作像[[1, [1, 1, 1]], [3, 4]]这样的数组的请求是不可能的。但是,你可以制作一个尺寸为(3x2x3)的numpy矩阵来获得

[
 [
  [1,0,0],
  [1,1,1],
  [0,0,0],
 ]
 [
  [3,0,0],
  [4,0,0],
  [0,0,0]
 ]
]

你唯一的选择是填充一些带有一些数字的空元素(我上面使用0)或使用其他数据结构。

答案 1 :(得分:1)

创建的

Error: Permission denied @ unlink_internal - /usr/local/share/ghostscript/9.16/Resource/CIDFont/HiraKakuPro-W3是dtype int。每个元素只能是另一个整数:

a

你可以创建另一个dtype数组,一个包含指向对象的指针,就像列表一样:

In [758]: a = np.array([(1, 2, 3),(4, 5, 6)])
     ...: b = np.array([1,1,1])
     ...: 
In [759]: a
Out[759]: 
array([[1, 2, 3],
       [4, 5, 6]])
In [760]: b
Out[760]: array([1, 1, 1])
In [761]: a[0,1]=b
...
ValueError: setting an array element with a sequence.

现在可以用指向In [762]: aO = a.astype(object) In [763]: aO Out[763]: array([[1, 2, 3], [4, 5, 6]], dtype=object) 数组的指针替换其中一个元素指针:

b

但正如评论中所说 - 你为什么要/需要这样做?你打算用这样的阵列做什么?可以在这样的数组上进行一些In [765]: aO[0,1]=b In [766]: aO Out[766]: array([[1, array([1, 1, 1]), 3], [4, 5, 6]], dtype=object) 数学运算,但是如最近的一些SO问题所示,它是命中注定的。它也慢了。