python 报ValueError could not broadcast input array from shape或 Can‘t convert non-rectangular
python 报ValueError: could not broadcast input array from shape
numpy报ValueError: could not broadcast input array from shape
tensorflow报ValueError: Can’t convert non-rectangular Python sequence to Tensor.
这两个错误都是一样的的原因。
在使用numpy和tensorflow将list转为array或tensor的时候报错
弹出错误的代码:
a = np.array([[1.1,1.2],[2.1,2.2]])
b = np.array([[1.1,1.2,1.3],[2.1,2.2,2.3]])
c = [a,b]
d = np.array(c)
# d = tf.constant(c)
错误信息描述
ValueError: could not broadcast input array from shape (2,2) into shape (2)
# ValueError: Can't convert non-rectangular Python sequence to Tensor.
问题分析
出现这个问题的主要原因是因为list中array的shape不一致造成的,所以发生这个问题的时候,先将list中数组的shape全部打印出来观察一下
print(a.shape,b.shape)
输出信息
(2, 2) (2, 3)
解决问题
对于这种问题主要有三种解决办法,第1种是改为使用字典。第2种就是将list中的array全部都展开,第3种就是利用mask来使得数组的shape一致
第一种改为使用字典
就是用字典分开存储每个列表,可以转为将每个列表转为tensorflow或numpy的数据格式
如果之后操作时变量c的话,推荐这种方式
a = np.array([[1.1,1.2],[2.1,2.2]])
b = np.array([[1.1,1.2,1.3],[2.1,2.2,2.3]])
c = {'a':tf.constant(a),'b':tf.constant(b)}
print(c)
{'a': <tf.Tensor: id=0, shape=(2, 2), dtype=float64, numpy=
array([[1.1, 1.2],[2.1, 2.2]])>, 'b': <tf.Tensor: id=1, shape=(2, 3), dtype=float64, numpy=
array([[1.1, 1.2, 1.3],[2.1, 2.2, 2.3]])>}
使用时只需要按字典使用就可以。
展开数组
在使用这种方法的时候需要满足数组的行或列一致,只能有一个维度不同,不然没法还原数组
a = np.array([[1.1,1.2],[2.1,2.2]])
b = np.array([[1.1,1.2,1.3],[2.1,2.2,2.3]])
c = np.array([a.ravel(),b.ravel()])
print(c)
for arr in c:print(arr.reshape(2,-1)) # 转变形状
输出信息
[array([1.1, 1.2, 2.1, 2.2]) array([1.1, 1.2, 1.3, 2.1, 2.2, 2.3])][[1.1 1.2][2.1 2.2]]
[[1.1 1.2 1.3][2.1 2.2 2.3]]
利用mask
这种方法主要是应用图片上,通常以图片的最大尺寸作为模板,当然如果是图片的话你也可以通过resize来使得它们的shape一致,只是使用resize的话可能会导致图片发生形变影响图片表达的信息
import copy
a = np.array([[1.1,1.2],[2.1,2.2]])
b = np.array([[1.1,1.2,1.3],[2.1,2.2,2.3]])
mask = np.zeros((2,3))
a_mask = copy.deepcopy(mask)
a_mask[:a.shape[0],:a.shape[1]] = a
b_mask = copy.deepcopy(mask)
b_mask[:b.shape[0],:b.shape[1]] = b
c = np.array([a_mask,b_mask])
print(c)
输出信息
[[[1.1 1.2 0. ][2.1 2.2 0. ]][[1.1 1.2 1.3][2.1 2.2 2.3]]]
python 报ValueError could not broadcast input array from shape或 Can‘t convert non-rectangular相关推荐
- numpy报ValueError: could not broadcast input array from shape
问题描述 在使用numpy将list转为array的时候报错 代码 a = np.array([[1,2],[3,4]]) b = np.array([[5,6,7],[8,9,10]]) c = [ ...
- ValueError: could not broadcast input array from shape (*,*) into shape (*)
在将一个list转为np.array时出现如题错误. 错误原因: list中各元素的数据的shape不一致 解决办法: 1)方法1. 将list中的多个元素沿某个公共维度串联成一个张量,然后保存每个元 ...
- ValueError: could not broadcast input array from shape(708,1016,3) into shape(1016,708,3)
在终端中打开model文件夹.输入sh 1.sh,运行1.sh文件. 出现报错信息: ValueError: could not broadcast input array from shape(70 ...
- CNN分类中批量读取数据及制作标签时报错:could not broadcast input array from shape (128,128,3) into shape (128,128)
一.背景 最近在做CNN分类时,用了一个能够一次性读取文件夹下所有数据并按文件夹制作相应标签的函数.之前做13类别,总计约1000张图片时,用这个函数没有任何问题,但后后来加到约40000张图片的时候 ...
- could not broadcast input array from shape (64,64,3) into shape (64,64,4)
做图片分类时候,因为我自己的训练集是PNG格式,那么PNG格式,相比较JPG会多出一个透明图层,因此,PNG格式除了RGB还有一个透明,这个透明通道会让图片数组变成64*64*4 而我配置的图片输入, ...
- Python Unable to allocate MiB for an array with shape
最近在运行一个python项目,不过并不熟悉python,因为一直在做java开发的工作.最近改了一个python项目里的SQL,查询的数据量更大了,运行后抛出异常,所以初步怀疑是内存不够 pycha ...
- python报错Ran out of input
报错显示: 首先进行Traceback,发现报错语句为:pickle.load() 之后网上查找原因有: (1)https://www.cnblogs.com/rychh/p/9833318.html ...
- python报错:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any(
在判断多元素数组是否为空时,报了这个错 if a: # a是含有多个元素的numpy数组xxx python报错: ValueError: The truth value of an array wi ...
- python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案
1.承接上一篇博文,上文提到append()函数中的参数ignore_index=True,如果加上该参数,是a.append(b,ignore_index=True),数据不支持的情况下会报错&qu ...
最新文章
- 一起学react day1
- 问题记录:如何比较两个字符串的相似度
- UE4 连接自定义服务器
- 带你入门SpringCloud统一配置 | SpringCloud Config
- 从字符串中检索字符实现翻页
- 半小时训练亿级规模知识图谱,亚马逊这个 AI 框架要火!
- SharePoint 2010 中型场(Farm)——性能研究(来自DeLL技术中心博客)
- 使用CSF对kitti的点云数据过滤出地面点云,结合PCL使用,C++实现
- 基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践
- okcc呼叫中心外呼系统小白的使用教程
- Java post请求工具类
- autocad2007二维图画法_AutoCAD 2007矩形绘制方法教程
- 计算机PS属性怎么改,如何更改ps设计图尺寸
- android 橡皮擦 黑色,Android画板,橡皮擦为黑色痕迹的问题
- 飞腾CPU BIOS固件生成教程
- 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变
- Kafka 的 replica 同步机制(ISR与OSR列表数据相互转换)
- 看雪版主、十年黑客“玩命”:我不作死,我只玩命 | 宅客故事
- 「TCG 规范解读」初识 TPM 的应用环境
- HTML静态页面总体设计思路,网页设计与制作(HTML+CSS+JavaScript)(张洪斌 刘万辉)课程整体设计...
热门文章
- 程序员的健康--预防
- 必备元器件知识1——电阻
- openjudge 1.7.18 验证子串
- 多组两两比较用什么检验方法_多组均数两两比较时,若不用q检验而用t检验,则:...
- Hadoop实战演练:搜索数据分析----多个不同的Job进行串连(4)
- 【GIS】OpenStreetMap城市边界shp提取
- Modernizr的介绍和使用
- 系统架构师学习笔记-嵌入式系统
- 千匠星云数字化解决方案介绍 | 品牌官网数字化升级解决方案
- 转:Adobe Audition(Cool Edit) 用PC 录制翻唱歌曲