You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确初始化Numpy二维数组并垂直追加行数据?

解决Numpy追加SQL行数据的维度不匹配问题

错误原因很明确:你初始化的table_array是2维数组(形状(0,9)),但cursor.fetchone()返回的row是1维的元组/数组,直接用numpy.append指定axis=0时,两者维度不兼容,触发了维度不匹配的报错。

下面两种方法可以解决这个问题:

方法一:将单行数据转为2维数组后再追加

把每次获取的1维行数据,转换成形状为(1,9)的2维数组,和原数组维度对齐后再追加:

import numpy as np

sql_query = "select top 100 Passed, f.ID, Yld, Line, Location, Type, Name, ErrorID, Site from dw.table1 f join dw.table2 d on f.ID = d.ID where Type like '%test%'"
table_array = np.empty((0, 9))  
cursor.execute(sql_query)
row = cursor.fetchone()
while row:
    # 把1维的row转为2维数组(新增一个行维度)
    row_2d = np.array(row)[np.newaxis, :]
    table_array = np.append(table_array, row_2d, axis=0)
    row = cursor.fetchone()

方法二:先收集所有行到列表,再一次性转成Numpy数组(更推荐)

Numpy数组每次追加都会重新分配内存、复制数据,数据量大时性能很差。先把所有行存到普通列表里,最后再转成2维数组,效率更高:

import numpy as np

sql_query = "select top 100 Passed, f.ID, Yld, Line, Location, Type, Name, ErrorID, Site from dw.table1 f join dw.table2 d on f.ID = d.ID where Type like '%test%'"
cursor.execute(sql_query)

rows_list = []
row = cursor.fetchone()
while row:
    rows_list.append(row)
    row = cursor.fetchone()

# 列表转成2维Numpy数组
table_array = np.array(rows_list)

内容的提问来源于stack exchange,提问作者Mich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:25:24