解决numpy 0d arrays error

使用numpy array时,可能会遇到 “iteration over a 0-d array” 的错误。

例1:
import numpy as np

a = 1
a = np.asarray(a)
for i in a:
  print(i)
TypeError: iteration over a 0-d array
例2:
import numpy as np

a, b = 1, 2
a, b = np.asarray(a), np.asarray(b)
for i, j in zip(a, b):
  print(i+j)
TypeError: zip argument #1 must support iteration

解决方法:

使用 numpy.atleast_1d() 即可:

import numpy as np

a, b = 1, 2
a, b = np.atleast_1d(a), np.atleast_1d(b)
for i, j in zip(a, b):
  print(i+j)

参考资料:Python, numpy; How to best deal with possible 0d arrays.


 上一篇
黄金分割搜索 黄金分割搜索
适用于,一维单峰函数搜索最小值或者最大值。 核心思想:基于函数是一维单峰的特性,通过三个点来判断函数的大致走向,并且可以知道最小值一定落在已知最小点的相邻两点所界定的区间内。所以可以通过在区间内插入新的点,来逐步缩小最小值的所在的区间。 例
2018-12-04
下一篇 
Scipy积分 Scipy积分
数值积分一重积分(SciPy.integrate.quad):例子为求解单位半圆的面积: from scipy import integrate def half_circle(x): return (1-x**2)**0.5
2018-12-04
  目录