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

为何for循环计算值无法添加到numpy数组,返回全None?

问题:循环计算值存入numpy数组后全为None

你的代码里,自定义函数P只通过print输出了计算结果,但没有返回值——Python中没有return语句的函数默认返回None。所以你调用P(u[i])时,append到列表p里的都是None,转成numpy数组自然就是全None的数组。

修复方案:给函数添加return语句

把P函数里的print(sum/14)改成return sum/14,这样调用函数时就能拿到实际计算值:

import numpy as np
import matplotlib.pyplot as plt

j=np.array([14,15,16,16,16,22,22,24,24,25,25,25,25,25])
u=np.unique(j)


def P(age):
    sum=0
    for i in range(14):
        if j[i]==age:
            sum=sum+1
    return sum/14  # 替换print为return
    
p = []
for i in range(len(u)):  # 用len(u)代替固定的6,适配数组长度变化
    p.append(P(u[i]))
p=np.array(p)
print(p)
print(type(p))

输出:

[0.07142857 0.07142857 0.21428571 0.14285714 0.14285714 0.35714286]
<class 'numpy.ndarray'>

更高效的numpy原生实现

既然用了numpy,完全可以不用手动写循环,利用numpy内置的统计函数更简洁高效:

import numpy as np

j=np.array([14,15,16,16,16,22,22,24,24,25,25,25,25,25])
u, counts = np.unique(j, return_counts=True)
p = counts / len(j)

print(p)

输出和上面一致,而且代码更简洁,数据量大时性能优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:05:13