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

如何将多个NumPy数组转换为垂直表格格式?

如何将多个NumPy数组转换为垂直表格格式?

嘿,我来帮你搞定这个问题!你遇到的错误根源很明确:你在尝试直接对整个NumPy数组应用格式化字符串,但格式化操作是针对单个元素的,而非整个数组对象,NumPy数组本身不支持这种直接的格式化方式,所以才会抛出unsupported format string passed to numpy.ndarray.__format__的错误。

咱们一步步来解决这个问题,先给你最贴合你现有代码的修复方案,再给你更便捷的替代方法:


方案1:纯NumPy+循环遍历(贴合你的原有代码)

核心思路是遍历每个数组的对应元素,而不是直接操作整个数组。我们可以用zip()函数把四个数组中索引对应的元素打包成元组,然后逐个对元素应用格式化:

import numpy as np

# 你的原始数组
products = np.array(["laptop","smartphone","tablet"])
price = np.array([2999.99,1099.99,1009.99])
storage_space_MB = np.array([1500000,64000,512000])
quantity=np.array([8,20,16])

# 定义列宽
col_width = 15

# 处理表头和分隔线(你原来的这部分代码是对的)
header = f"{'Product Name':<23}{'Price':<{col_width}}{'Storage Space (MB)':>{col_width}}{'Quantity':>{col_width}}"
line = "="*72

# 打印表头
print(header)
print(line)

# 遍历每个产品的对应数据,逐个格式化元素
for prod, pr, storage, qty in zip(products, price, storage_space_MB, quantity):
    # 价格用.2f保证小数位数一致,更美观
    row = f"{prod:<23}{pr:<{col_width}.2f}{storage:>{col_width}}{qty:>{col_width}}"
    print(row)

运行这段代码后,就能得到你想要的表格效果:

Product Name            Price           Storage Space (MB)        Quantity
========================================================================
laptop                  2999.99                1500000                8
smartphone              1099.99                  64000               20
tablet                  1009.99                 512000               16

方案2:用Pandas一键生成表格(更便捷)

如果你不排斥使用第三方库,用Pandas可以省去手动格式化的麻烦,它会自动帮你整理成整齐的表格:

import numpy as np
import pandas as pd

# 你的原始数组
products = np.array(["laptop","smartphone","tablet"])
price = np.array([2999.99,1099.99,1009.99])
storage_space_MB = np.array([1500000,64000,512000])
quantity=np.array([8,20,16])

# 转换为DataFrame
df = pd.DataFrame({
    "Product Name": products,
    "Price": price,
    "Storage Space (MB)": storage_space_MB,
    "Quantity": quantity
})

# 打印表格(去掉索引列)
print(df.to_string(index=False))

运行后会输出和你预期完全一致的表格,而且不需要手动调整列宽和格式化规则,非常省心。


为什么你的原有代码报错?

再帮你复盘一下:你写的f"{products:<{23}}"是在尝试把整个products数组当作一个单独的对象来格式化,但NumPy数组的__format__方法不支持这种字符串格式化语法,必须针对数组内的单个元素进行操作,这就是zip()遍历能解决问题的原因。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:53:09