Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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 ValueError:无法将输入数组从形状(3)广播到形状(2)简单解决方案_Python_Numpy - Fatal编程技术网

Python ValueError:无法将输入数组从形状(3)广播到形状(2)简单解决方案

Python ValueError:无法将输入数组从形状(3)广播到形状(2)简单解决方案,python,numpy,Python,Numpy,我有一个np数组,并尝试在其中一行中添加一个数字(如果可能,尝试使用非对称数组,如果不是,100*3数组也可以) 请注意,a=np.arange(100*2).重塑(-1,2)只是一个简化的示例,而不是我想要处理的真实代码。 我收到了这个错误 ValueError: could not broadcast input array from shape (3) into shape (2) 有什么简单的解决方案吗(除了创建新数组并用以前的值填充循环,然后添加6)?这是解决您问题的方法吗 impo

我有一个np数组,并尝试在其中一行中添加一个数字(如果可能,尝试使用非对称数组,如果不是,100*3数组也可以)

请注意,
a=np.arange(100*2).重塑(-1,2)
只是一个简化的示例,而不是我想要处理的真实代码。 我收到了这个错误

ValueError: could not broadcast input array from shape (3) into shape (2)

有什么简单的解决方案吗(除了创建新数组并用以前的值填充循环,然后添加6)?

这是解决您问题的方法吗

import numpy as np

a = np.zeros((100, 3))
a[:,0:2] = np.arange(100*2).reshape(-1,2)

a[40,2]=6

numpy
中最接近不规则数组的是对象数据类型数组:

In [475]: a = np.empty(2, object)                                                                    
In [476]: a                                                                                          
Out[476]: array([None, None], dtype=object)
如果元素是一个列表,则可以使用其
append
添加值:

In [477]: a[0] = [1,2]                                                                               
In [478]: a[1] = [2,3]                                                                               
In [479]: a[1].append(4)                                                                             
In [480]: a                                                                                          
Out[480]: array([list([1, 2]), list([2, 3, 4])], dtype=object)
但这样的数组是否比列表更好还是个疑问

In [481]: a.tolist()                                                                                 
Out[481]: [[1, 2], [2, 3, 4]]

您是否正在尝试将
6
添加到行
a[40]
?或者手术后,
a[40]
应该是什么样子?是的,我不确定你是否能做到。因为
array
是形状(N,2),但是你可以做一些类似
a=np.append(a,np.zeros((a.shape[0],1)),axis=1)
的事情,然后
a[40,2]=6
?是的,我想要
a[40,2]=6
谢谢你,但是
a=np.arange(100*2)。重塑(-1,2)
只是一个简化的例子,不是我想要处理的真实代码。所以我想保留
a
,而且我更倾向于得到一个非对称的答案。如果你想要一个非对称的解决方案,你必须使用列表数组或列表列表。
In [481]: a.tolist()                                                                                 
Out[481]: [[1, 2], [2, 3, 4]]