Python ValueError:无法将输入数组从形状(3)广播到形状(2)简单解决方案
我有一个np数组,并尝试在其中一行中添加一个数字(如果可能,尝试使用非对称数组,如果不是,100*3数组也可以) 请注意,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
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]]