numpy vertical function :#39;float#39; object is not subscriptable(NumPy垂直函数:#39;浮动#39;对象不可订阅)
本文介绍了NumPy垂直函数:';浮动';对象不可订阅的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个麻木的阵列:
import numpy as np
pval=np.array([[0., 0.,0., 0., 0.,0., 0., 0.],
[0., 0., 0., 0., 0.,0., 0., 0.]])
和矢量化函数:
def getnpx(age):
return pval[0]+age
vgetnpx = np.frompyfunc(getnpx, 1, 1)
vgetnpx(1)
输出:
array([1., 1., 1., 1., 1., 1., 1., 1.])
但是,如果我想为pval设置一个变量:
def getnpx(mt,age):
return mt[0]+age
vgetnpx = np.frompyfunc(getnpx, 2, 1)
vgetnpx(pval,1)
我收到错误:
TypeError: 'float' object is not subscriptable
为pval设置变量的正确方法是什么?任何朋友都可以帮助您吗?
推荐答案
我不明白您为什么要尝试使用frompyfunc
。用于将数组参数传递给仅接受标量输入的函数。
In [97]: pval=np.array([[0., 0.,0., 0., 0.,0., 0., 0.],
...: [0., 0., 0., 0., 0.,0., 0., 0.]])
在第一种情况下,您使用全局pval
,并且只使用1age
值。无需frompyfunc
:
In [98]: pval[0]+1
Out[98]: array([1., 1., 1., 1., 1., 1., 1., 1.])
如果要将pval
作为参数传递,只需执行以下操作:
In [99]: def foo(mt,age):
...: return mt[0]+age
...:
In [100]: foo(pval,1)
Out[100]: array([1., 1., 1., 1., 1., 1., 1., 1.])
您提供了指向我之前回答的问题的链接。这种情况的症结在于,您的函数返回了一个大小可能不同的数组。我展示了如何通过列表理解来使用它。我还展示了如何调整vectorize
,以便它可以愉快地返回object
dtype结果。或者使用frompyfunc
返回该对象。在所有这些情况下,函数参数都是标量,即单个数字。
如果您的目标是向pval
的每一行添加不同的age
,则只需执行以下操作:
In [102]: pval + np.array([[1],[2]])
Out[102]:
array([[1., 1., 1., 1., 1., 1., 1., 1.],
[2., 2., 2., 2., 2., 2., 2., 2.]])
这篇关于NumPy垂直函数:';浮动';对象不可订阅的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:NumPy垂直函数:';浮动';对象不可订阅


猜你喜欢
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01