如何从np.array(2.7)获得2.7?

时间:2015-12-23 23:25:25

标签: python numpy

在numpy中很容易从np.array([2.7])检索2.7,但在尝试从这样的数组np.array(2.7)中检索值2.7时会遇到问题。

如何从中检索值def get(a): ......

更具体地说,我需要一个功能

get(np.array(2.7))=2.7

以便 [HttpPost] public async Task<IActionResult> Register (RegisterViewModel model) { try { var userStore = new UserStore<ApplicationUser>(db); var userManager = new UserManager<ApplicationUser>(userStore); var user = new ApplicationUser { UserName = model.Email }; IdentityResult result = await userManager.CreateAsync(user, model.Password); return RedirectToAction(nameof(HomeController.Index), "Home"); } catch (Exception ex) { Console.WriteLine(ex.Message); return View(); } } 。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

In [1]: import numpy

In [2]: a = numpy.array(2.7)

In [3]: a[()]
Out[3]: 2.7000000000000002

你可能想要考虑一下为什么你甚至有一个0维数组。它们有点奇怪,如果0D数组上的操作产生标量或数组,它可能有点挑剔。

(你看到的额外...02因为2.7在浮点中不能完全表示,索引数组会为你提供NumPy标量而不是Python标量,而NumPy的显示逻辑与Python略有不同。)

答案 1 :(得分:0)

np.array(2.7)是一个零维数组。你不能索引它们:

>>> arr = np.array(2.7)
>>> arr[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: 0-d arrays can't be indexed

对于大多数实际用途,您可以像使用常规浮点数或整数一样使用这些数组。

>>> arr*2
5.4000000000000004
>>> arr+1
3.7000000000000002
>>> float(arr)
2.7

回应你的评论:

  

它是0维的直觉是什么?

嗯,您可以看到它的一个示例是访问数组的shape属性。

>>> arr.shape
()
>>> np.array([2.7]).shape
(1,)