numpy数据类型ndarray

时间:2021-11-03 21:21:32

为什么要有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对象的一些属性:

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优势,应尽量避免使用。