为什么要有ndarray的数据类型?看下面的例子。
1.计算A^2+B^2,其中A,B是以为数组。
这是一般的做法:
def pysum(): a = [0,1,2,3,4] b = [5,6,7,8,9] c = [] for i in range(len(a)): c.append(a[i]**2 + b[i]**3) return c print(pysum())
这是使用ndarray的做法:
import numpy as np def pysum(): a = np.array([0,1,2,3,4]) b = np.array([5,6,7,8,9]) c = a**2 + b**3 return c print(pysum())
从中可以很清楚的感受到ndarray的方便之处,它能够去掉循环的步骤,效率高,且容易理解。
从上面的例子中,可以知道ndarray通过np.array()函数创建。ndarray的直接输入形式和以print()输出的形式是不同的:
>>>c = np.array([1,2,3,4,5]) >>>c array([1, 2, 3, 4, 5]) >>>print(c) [1 2 3 4 5]
下面是有关ndarray对象的一些属性:
属性 | 说明 |
---|---|
.ndim | 秩,即轴的数量或维度的数量 |
.shape | ndarray对象的尺度,对于矩阵,n行m列 |
.size | ndarray对象元素的个数,相当于.shape中n*m的值 |
.dtype | ndarray对象的元素类型 |
.itemsize | ndarray对象中每个元素的大小,以字节为单位 |
>>>c = np.array([[0,1,2,3,4],[5,6,7,8,9]]) >>>c.ndim 2 >>>c.shape (2,5) >>>c.size 10 >>>c.dtype dtype('int32') >>>c.itemsize 4
当ndarray数组中元素的维度不相等时,将其叫做非同质对象,例如:
>>>c = np.array([[0,1,2,3,4],[5,6,7,8,9]]) >>>c.ndim 1 >>>c.shape (2,) >>>c.size 2 >>>c.dtype dtype('O')
非同质ndarray对象无法发挥Numpy优势,应尽量避免使用。