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

向NumPy联系人数组添加新数据时遭遇维度匹配ValueError问题

解决NumPy数组添加联系人的维度不匹配问题

问题原因

你的data数组形状是(5, 3):5行对应5种信息类别(姓名、姓氏、邮箱、用户名、密码),每行有3个元素对应3个联系人。而你创建的new_contact是(1, 5)的二维数组(1行5列),当用axis=1拼接时,NumPy要求除了拼接轴(这里是列轴)之外的其他维度(行维度)必须大小一致,但原数组行维度是5,new_contact行维度是1,因此触发维度不匹配错误。

修复方案

需要把新联系人的结构调整为(5, 1)的二维数组(5行1列),这样每个元素对应一个类别的新联系人信息,就能和原数组在列轴上拼接。

修改后的完整代码

import numpy as np

data = np.array([
    ["Leon","John","Petar"], #Names
    ["Smith","Jones","Taylor"], #Surnames
    ["leon.smith@gmail.com","john.jones@chello.at","peta.tayl@gmail.com"], # EMails
    ["maxefaxe11","Mohrhuhn3000","warpd_fungz"], #Usernames
    ["fakemake11","ichliebehuhn1","lollls123"] #Passwords
])

def register_contact():
    # 收集用户输入
    name = input("Enter name: ")
    surname = input("Enter surname: ")
    email = input("Enter email: ")
    username = input("Enter username: ")
    password = input("Enter password: ")

    # 将新联系人信息调整为(5,1)的形状,匹配原数组行维度
    new_contact = np.array([name, surname, email, username, password]).reshape(-1, 1)
    global data
    # 沿列轴拼接,把新联系人信息追加到对应类别行的末尾
    data = np.concatenate((data, new_contact), axis=1)

    print("Contact registered successfully.")

register_contact()
# 查看更新后的数组
print(data)

关键修改说明

  • 把new_contact的创建方式从[[name, surname, email, username, password]](形状(1,5))改为np.array([name, surname, email, username, password]).reshape(-1, 1),得到形状为(5,1)的数组,和原数组的行维度完全匹配。
  • 保持axis=1的拼接方向,最终会生成你期望的(5,4)结构数组。

验证结果

运行代码并输入新联系人信息后,data数组会变成如下结构:

[['Leon' 'John' 'Petar' 'Tom']
 ['Smith' 'Jones' 'Taylor' 'Walker']
 ['leon.smith@gmail.com' 'john.jones@chello.at' 'peta.tayl@gmail.com' 'tom.tow@gmail.com']
 ['maxefaxe11' 'Mohrhuhn3000' 'warpd_fungz' 'tomi12341']
 ['fakemake11' 'ichliebehuhn1' 'lollls123' 'password111']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:53:14