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

2024-05-29 09:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

a=np.arange(100*2).reshape(-1,2)
a[40]=np.append(a[40],6)

注意a=np.arange(100*2).reshape(-1,2)只是一个简化的示例,而不是我想要操作的真正代码。 我收到了这个错误

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

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


Tags: 代码示例错误npnot数字数组could
2条回答

这能解决你的问题吗

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

相关问题 更多 >

    热门问题