python numpy Quickstart tutorial之ndarray创建

ndarray是numpy中基础类型,根据官方文档Quickstarttutorialhttps://numpy.org/devdocs/user/quickstart.html支持它是相同数据类型的多维数组,相当于多个元组的组合,其中Numpy中的多维被称为轴

比如,在一个3d空间中表示一个点为【1,2,1】代表了一个轴,每个轴有3个元素,所以长度为3,比如一个2*3的矩阵代表有li个轴,每个轴为3维空间,

[[ 1., 0., 0.],
 [ 0., 1., 2.]]

ndarray可以表示为N维的数组,在ndarray中每个轴占用相同的内存,其内存存储格式如下:

 

 其内部数据结构主要由以下几个部分组成:

(1)header代表为ndarray的头部信息,包括一个data-type,

(2) data-type为数组中每个元素固定的大小 占用的空间

(3)一个指向数组离散array scalar的指针,该元素可以指向ndarray中的某个具体的元素,以此来来实现可以通过index访问里面的某个元素值

创建ndarray

创建ndarray可以官方给出了有好几种方法,下面将以此介绍

1:array

可以使用numpy.array函数来创建一个ndarray,其函数格式如下:

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

官方文档中该函数链接为https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html#numpy.array

参数介绍

object:必选项,为数组或者嵌套的序列

dtype: 可选项,数组的元素数据类型,如果没有设置 默认则为最小类型,32位情况下为整型为4个字节,64位情况下为8个字节

copy:可选项,对象是否需要复制,默认True,表示copy object重新申请内存申请一个数据和object大小值一样的nbarray

order:可选项,创建数组的样式,C为行方向,F为列方向,A为任意方向,K为按照行和列方向,默认为K

subok:可选项,如果为True,子类将会被传递,默认为False,返回的将会强制为基类

ndmin, 输出最小的维度

输出为ndarray格式数组

使用范例:

1.创建一个1*3维的数组:

import numpy as np

a= np.array([2,3,4])
print(a)

运行结果 :

[2 3 4]

2:创建一个3*3维的数组:

import numpy as np

a= np.array([[2,3,4],
            [4,5,6],
            [7,8,9]])
print(a)

运行结果:

[[2 3 4]
 [4 5 6]
 [7 8 9]]

   3:创建一个3*3维的数组,指定dtype为complex:

import numpy as np

a= np.array([[2,3,4],
            [4,5,6],
            [7,8,9]],dtype=complex)
print(a)

运行结果:

[[2.+0.j 3.+0.j 4.+0.j]
 [4.+0.j 5.+0.j 6.+0.j]
 [7.+0.j 8.+0.j 9.+0.j]]

4:创建一个3*3维数组,ndmin =2:

import numpy as np

a= np.array([[2,3,4],
            [4,5,6],
            [7,8,9]],ndmin=2)
print(a)

运行结果:

[[2 3 4]
 [4 5 6]
 [7 8 9]]

2:zeros

numpy.zeros函数创建的数组元素值全部为零,其函数原型为:

numpy.zeros(shape, dtype=float, order='C')

参数:

shape:必选项 各维度的大小的元组,比如一个n*m的数组表示方法为(n,m)

其他两个参数和上述一致

使用范例::

1创建一个2*3大小的数组,且初始化为0:

import numpy as np

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

运行结果:

[[0. 0. 0.]
 [0. 0. 0.]]

2:创建一个5的数组,且类型为整数

import numpy as np

a= np.zeros((5), dtype=int)
print(a)
print("********")
a= np.zeros((5,), dtype=int)
print(a)

运行结果:

[0 0 0 0 0]
********
[0 0 0 0 0]

3:ones

使用numpy.ones()函数,与zeros函数不同的是,将数组元素值都初始化为1,其函数原型为:

numpy.ones(shape, dtype=None, order='C')[source]

参数和上述参数意义一致,不再解释

使用用例:

import numpy as np

a= np.ones((5))
print(a)
print("********")
b= np.ones((5,), dtype=int)
print(b)
print("********")
b= np.ones((2,1))
print(b)
print("********")
b= np.ones((3,3))
print(b)

运行结果:

[1. 1. 1. 1. 1.]
********
[1 1 1 1 1]
********
[[1.]
 [1.]]
********
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

4:empy

使用numpy.empty()函数,没有初始化入口,创建的数组元素值为随机值,其函数原型为:

numpy.empty(shape, dtype=float, order='C')

使用用例:

import numpy as np

a= np.empty((3,3))
print(a)
print("********")
b= np.empty((3,3), dtype=int)
print(b)

运行结果:

[[1.01804521e+235 1.33360424e+241 1.48000718e-309]
 [7.96738274e-220 5.84493794e-312 7.99079649e-306]
 [1.33360426e+241 1.51803335e-309 4.13690164e-186]]
********
[[ 44   0   0]
 [  0   0   0]
 [204   0   0]]

5:full

numpy.full函数顾名思义就是将创建的数组里面的值全部初始化为入口值,其函数为:

numpy.full(shape, fill_value, dtype=None, order='C')[source]

将创建的数组全部初始化为fill_value的值

用例:

import numpy as np

a= np.full((3,3),np.inf)
print(a)
print("********")
b= np.full((3,3), 10)
print(b)

运行结果:

[[inf inf inf]
 [inf inf inf]
 [inf inf inf]]
********
[[10 10 10]
 [10 10 10]
 [10 10 10]]

除了上述几个函数 还有empty_like, ones_like,zeros_like等函数

6:arange

numpy.arange()创建的数组序列,按照一定的间隔递增,其函数为:

numpy.arange([start, ]stop, [step, ]dtype=None)

参数意义:

start:为起始值,默认为0

stop:为结束值

step为步长

使用用例

1:创建数组从0到5:

import numpy as np

a= np.arange(6)
print(a)

    运行结果:

     

[0 1 2 3 4 5]

2:创建从10到30,步长为5的数组 

import numpy as np

a= np.arange(10,31,5)
print(a)

运行结果:

[10 15 20 25 30]

7:linspace

numpy.linspace()与arange最大不不同是创建数组的步长可以根据num数量自动计算,其函数原型为:

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

num为在start和stop之间需要创建多少个元素,默认为50

使用范围如下:

import numpy as np

a= np.linspace(2.0, 3.0, num=5)
print(a)
print("********")
a= np.linspace(2.0, 3.0, num=5, endpoint=False)
print(a)
print("********")
a= np.linspace(2.0, 3.0, num=5, retstep=True)
print(a)

运行结果:

[2.   2.25 2.5  2.75 3.  ]
********
[2.  2.2 2.4 2.6 2.8]
********
(array([2.  , 2.25, 2.5 , 2.75, 3.  ]), 0.25)

The Basics

ndarray除了提供以上函数之外,还提供了一些基本操作,如下列表

MethodDescript
ndarray.ndim该矩阵的维度
ndarray.shape为每个维度大小的元组
ndarray.size该矩阵元素个数
ndarray.itemsize矩阵每个元素占用空间大小
ndarray.dtype矩阵元素数据类型
ndarray.data矩阵数据部分

示范用例:

import numpy as np

a= np.array([[[2,3,4],
            [4,5,6],
            [7,8,9]],
            [[2,3,4],
            [4,5,6],
            [7,8,9]]])
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)
print(a.data)

运行结果:

3
(2, 3, 3)
18
int32
4
<memory at 0x05F748B0>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huo的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值