Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在矩阵上插入一项_Python_Numpy - Fatal编程技术网

Python 在矩阵上插入一项

Python 在矩阵上插入一项,python,numpy,Python,Numpy,如何将单个元素插入numpy上的数组中。我知道如何使用insert和axis参数插入整列或整行。但是如何按1插入/展开 例如,假设我有一个数组: 1 1 1 1 1 1 1 1 1 如何插入0(在同一行上),比如(1,1)位置,比如: 1 1 1 1 0 1 1 1 1 1 这可行吗?如果是这样,那么你如何做相反的事情(在同一列上),比如: 我认为应该使用常规Python数组的append()(而不是numpy) 下面是一个简短的例子 A = [[1,1,1], [1,1,1],

如何将单个元素插入numpy上的数组中。我知道如何使用insert和axis参数插入整列或整行。但是如何按1插入/展开

例如,假设我有一个数组:

1 1 1
1 1 1
1 1 1
如何插入0(在同一行上),比如(1,1)位置,比如:

1 1 1
1 0 1 1
1 1 1
这可行吗?如果是这样,那么你如何做相反的事情(在同一列上),比如:


我认为应该使用常规Python数组的
append()
(而不是numpy) 下面是一个简短的例子

A = [[1,1,1],
     [1,1,1],
     [1,1,1]]
A[1].append(1)
结果是

[[1, 1, 1], 
 [1, 1, 1, 1], 
 [1, 1, 1]]   # like in your example
不可能使用一个元素进行列扩展,因为值是按行存储的。从技术上讲,您可以执行如下操作:
A.append([None,1,None])
,但这是一种不好的做法。

Numpy有一些看起来像参差不齐的数组,但它们是对象数组,可能不是您想要的。请注意以下方面的差异:

In [27]: np.array([[1, 2], [3]])
Out[27]: array([[1, 2], [3]], dtype=object)

In [28]: np.array([[1, 2], [3, 4]])
Out[28]:
array([[1, 2],
       [3, 4]])
如果要将
v
插入行/列
i/j
,可以通过填充其他行来完成。这很容易做到:

In [29]: a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])

In [30]: i, j, v = 1, 1, 3

In [31]: np.array([np.append(a[i_], [0]) if i_ != i else np.insert(a[i_], j, v) for i_ in range(a.shape[1])])
Out[31]:
array([[1, 1, 1, 0],
       [1, 3, 1, 1],
       [1, 1, 1, 0]])

若要沿列而不是行填充,请先转置
a
,然后执行此操作,然后再次转置。

您要创建的东西在我看来不像矩阵。好的,我想您可以说它的数组。您想做什么?例如,您的总体目标是什么?很有可能,你的目标并没有得到像这样凌乱的数据结构的帮助,或者它是这样的,并且NumPy不是适合这项工作的工具。(但我愿意感到惊讶)你不能。Numpy阵列不是为那些不规则尺寸而设计的。好吧,也许你可以使用
object
类型的数组(参见@AmiTavory的答案)为你找到一些有用的东西,但是它们可能会带来其他问题。如果你愿意使用
None
等等,这里有一个相关的问题:
In [29]: a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])

In [30]: i, j, v = 1, 1, 3

In [31]: np.array([np.append(a[i_], [0]) if i_ != i else np.insert(a[i_], j, v) for i_ in range(a.shape[1])])
Out[31]:
array([[1, 1, 1, 0],
       [1, 3, 1, 1],
       [1, 1, 1, 0]])