诡异错误二:TypeError: data type not understood

本文介绍如何使用Python的zeros函数创建不同维度的全零数组或矩阵,包括一维、二维及三维,并解释了正确的参数传递方式。
部署运行你感兴趣的模型镜像

如何使用Python产生一个数组,数组的长度为1024,数组的元素全为0?

很简单啊, 使用zeros(1024) 即可实现!

如何产生一个2×1024的全0矩阵呢?是否是zeros(2,1024) ?

若是上述这种写法就会出现 TypeError: data type not understood 这种错误;
正确的写法是 zeros((2,1024)),python的二维数据表示要用二层括号来进行表示。

三维数据是否使用三层括号?试一试,果然可以正确输出!试猜一猜, 下述三层括号中的数字分别代表什么含义?

In [9]: zeros(((2,2,3)))
Out[9]:
array([[[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.]]])

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

在使用 JavaScript 对数组对象进行过滤操作时,如果遇到 `TypeError: data2.filter is not a function` 这类错误,通常是因为调用 `.filter()` 方法的对象并不是一个数组,而是一个其他类型的数据结构(如 `null`、`undefined` 或对象等)[^1]。 ### 错误原因分析 该错误的核心在于 `data2` 并不是一个数组类型,因此不能直接调用 `.filter()` 方法。在实际开发中,这种问题常见于从接口获取数据后未正确解析或数据结构不一致的情况。例如: ```javascript this.axios.get('http://localhost:8989/personnels').then(res => { this.tableData = res.data; }) ``` 如果 `res.data` 并不是一个数组,而是嵌套的多层对象结构,直接赋值给 `tableData` 后再调用 `.filter()` 就会出错[^2]。 ### 解决方法 #### 1. 确保数据为数组类型 在调用 `.filter()` 前,应先检查变量是否为数组类型。可以使用 `Array.isArray()` 方法进行判断: ```javascript if (Array.isArray(data2)) { const result = data2.filter(item => item.id === 1); console.log(result); } else { console.error("data2 不是数组"); } ``` #### 2. 数据结构解析与转换 如果数据来自接口响应,应确保从响应中提取的是数组结构。例如,在嵌套数据中提取第三层的 `data`: ```javascript this.axios.get('http://localhost:8989/personnels').then(res => { const dataArray = res.data && res.data.records && res.data.records.data ? res.data.records.data : []; this.tableData = dataArray; }) ``` #### 3. 默认值设置 在不确定数据来源是否为数组的情况下,可以设置默认值以防止错误: ```javascript const data2 = someData || []; const result = data2.filter(item => item.status === 'active'); ``` #### 4. 使用 `try...catch` 捕获异常 对于不确定结构的数据,可以使用异常捕获机制避免程序崩溃: ```javascript try { const result = data2.filter(item => item.name === "test"); console.log(result); } catch (e) { console.error("过滤失败,data2 可能不是数组", e); } ``` ### 示例代码 以下是一个完整的错误处理与数据过滤示例: ```javascript this.axios.get('http://localhost:8989/personnels').then(res => { let data = res.data && res.data.records && res.data.records.data ? res.data.records.data : []; if (Array.isArray(data)) { const filtered = data.filter(item => item.name === "《西游记》"); console.log(filtered); } else { console.error("获取的数据不是数组"); } }); ``` 通过上述方法,可以有效避免 `TypeError: data2.filter is not a function` 错误的发生,并提升代码的健壮性与容错能力。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值