Numpy入门02---ndarray多维数组对象(上)

NumPy的核心特征之一就是N-维数组对象——ndarray。该数组容许你使用相似于标量的操做语法在整块数据上进行数学计算。python

接下来让咱们举个例子感觉一下:数组

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import numpy as np

# 生成随机数组
data = np.random.randn(2,3)
print(data)

# 给数组加上一个数学操做

print(data * 10)
print(data + data)

结果以下:dom

ndarray是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。函数

ndarray 对象是用于存放同类型元素的多维数组。spa

ndarray 中的每一个元素在内存中都有相同存储大小的区域。3d

ndarray中比较重要的属性code

01 建立ndarray

咱们经常使用的最简单的建立数组的方式就是使用array函数。对象

array函数能够将一个序列型对象转换成为NumPy数组。例如:blog

data_list = [6, 7.5, 8, 0, 1]
arr_list = np.array(data_list)
print(arr_list)

结果:索引

array函数还会将嵌套序列,自动转换成多维数组。

data_list2 = [[1,2,3,4],[5,6,7,8]]
arr_list2 = np.array(data_list2)
print(arr_list2)
# 由于data_list2是一个包含列表的列表,因此NumPy数组arr_list2造成了一个二维数组
# 咱们能够经过shape和ndim(ndim:秩,即轴的数量或维度的数量)肯定
print(arr_list2.shape)
print(arr_list2.ndim)

输出:

arange是Python内建函数range的数组版。

其余能够建立数组的函数有:

numpy.empty

建立一个指定形状(shape)、数据类型(dtype)且未初始化的数组,注意 − 数组元素为随机值,由于它们未初始化。

numpy.zeros

建立指定大小的数组,数组元素以 0 来填充。

numpy.ones

建立指定形状的数组,数组元素以 1 来填充:

empty_arr = np.empty((3,4),dtype=int)
print(empty_arr)

zero_arr = np.zeros((2,3))
print(zero_arr)

one_arr = np.ones((4,4))
print(one_arr)

numpy.linspace

numpy.linspace 函数用于建立一个一维数组,数组是一个等差数列构成的,格式以下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

numpy.logspace

numpy.logspace 函数用于建立一个于等比数列。格式以下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

参数说明:

02 ndarray的数据类型

数据类型,即dtype,是一个特殊的对象。它包含了ndarray须要为某一种类型的数据所申明的内存块信息。

Numpy经常使用的数据类型:

可使用astype方法来显式地转换数组的数据类型。

03 NumPy数组算术

向量化——能够对数组进行批量操做而无须任何for循环的特性。

num = np.array([[1,2,3,4],[5,6,7,8]])
print(num)
print(num + num)
print(num * num)
print(1 / num)
print(num ** 0.5)

输出以下:

同尺寸数组之间比较,会产生一个布尔值

num2 = np.random.randint(100,size=(2,4))
print(num2 > num)

结果以下:

不一样数组之间的操做,会用到广播特性

04 广播特性

广播是指 NumPy 在算术运算期间处理不一样形状的数组的能力。对数组的算术运算一般在相应的元素上进行。

若是两个数组的维数不相同,则元素到元素的操做是不可能的。 然而,在 NumPy 中仍然能够对形状不类似的数组进行操做,由于它拥有广播功能。

较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。

当运算中的 2 个数组的形状不一样时,numpy 将自动触发广播机制。如:

a = np.array([[0, 0, 0],
          [10, 10, 10],
          [20, 20, 20],
          [30, 30, 30]])
b = np.array([1, 2, 3])
print(a + b)

下面的图片展现了数组 b 如何经过广播来与数组 a 兼容。

广播的规则:

  • 对两个数组,分别比较他们的每个维度(若其中一个数组没有当前维度则忽略)
  • 数组拥有相同形状。
  • 当前维度的值相等。
  • 当前维度的值有一个是 1。
相关文章
相关标签/搜索