Numpy学习2-创建数组

2 篇文章 0 订阅
2 篇文章 0 订阅

文章目录


前言

接下来介绍创建numpy数组,要保证已经安装了numpy库。


提示:所有资料来源于书本和网上,本人仅整理

一、使用numpy.array()来创建ndarray对象

NumPy 的主要对象(类)是 numpy.ndarray,简称 ndarray 。
函数 numpy.array() 是最基本的 ndarray 对象创建方法。
其完整格式为:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数的含义如表所示:

参数名称参数含义
object返回一个数组或任何(嵌套)序列(列表,元祖,数组,或者其他序列类型)
dtype数组元素的数据类型,可选。
copy可选,默认为true,对象是否需要复制。
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。
ndmin指定返回数组的最小维数

1.创建一维数组

import numpy as np
a=[1,2,3,4,5]
b=np.array(a)
print(b)

array([1, 2, 3, 4, 5])

2.创建多维数组对象,可以把多维数组看做成矩阵

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

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

3.创建多维数组对象,设置数组元素类型

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

[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]
[7.+0.j 8.+0.j 9.+0.j]] <class ‘numpy.ndarray’>

二、ndarray对象的基本属性

创建数组后,可以查看ndarray对象的基本属性。属性我们常需要调用的就是ndim,shape和dtype

属性名称属性值
shape返回一个包含数组维度的元组,也可以用于调整数组大小,矩阵,n行m列
reshape调整数组大小
size返回数组元素的总个数,相当于 .shape 中 n*m 的值
data返回数组中的元素在内存中所占的字节数
ndim返回数组的维数,也称为秩。
itemsize数组中每个元素的字节单位长度
flags返回数组的内存信息,一些属性的当前值。
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('a.shape={},a.itemsize={},a.reshape={}'.format(a.shape,a.itemsize,a.reshape))
print('a.size={},a.ndim={},a.flags={}'.format(a.size,a.ndim,a.flags))

a.shape=(3, 3),a.itemsize=4,a.reshape=<built-in method reshape of numpy.ndarray object at 0x0000000006E58570>
a.size=9,a.ndim=2,a.flags= C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False

1.ndarray.ndim 用于返回数组的维数,等于秩。

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。

import numpy as np 
 
a = np.arange(24)  
print (a.ndim)             # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)  # b 现在拥有三个维度
print (b.ndim)

1
3

2.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。

比如,一个二维数组,其维度表示"行数"和"列数"。
ndarray.shape 也可以用于调整数组大小。

import numpy as np  
 
a = np.array([[1,2,3],[4,5,6]])  
print (a.shape)

(2, 3)

import numpy as np 
 
a = np.array([[1,2,3],[4,5,6]]) 
a.shape =  (3,2)  
print (a)

[[1 2]
[3 4]
[5 6]]

3.reshape 函数用来调整数组大小。

import numpy as np 
 
a = np.array([[1,2,3],[4,5,6]]) 
b = a.reshape(3,2)  
print (b)

[[1 2]
[3 4]
[5 6]]

三、创建特殊数组的函数

Python做数据处理的时候经常要初始化高维矩阵,常用的函数包括zeros()、ones()、empty()、eye()、full()、random.random()、random.randint()、random.rand()、random.randn(),arange()等,具体如下:

1.zeros():创建一个矩阵,内部元素均为0,第一个参数提供维度,第二个参数提供类型。

a=np.zeros([2,3],int)
a

array([[0, 0, 0],
[0, 0, 0]])

2.ones():创建一个矩阵,内部元素均为1,第一个参数提供维度,第二个参数提供类型。

a=np.ones([2,3],int)
a

array([[1, 1, 1],
[1, 1, 1]])

3.empty():创建一个矩阵,内部是无意义的数值,第一个参数提供维度,第二个参数提供类型。

a=np.empty([2,3],int)
a

array([[ 68485166, 0, 0],
[ 0, 131074, 1919184485]])

4.eye():创建一个对角矩阵,第一个参数提供矩阵规模,对于第二个参数而言,如果为0则对角线全为“1”,大于0则右上方第K条对角线全为“1”,小于0则左下方第K条对角线全为“1”,第三个参数提供类型。

a=np.eye(3,k=1,dtype=int)
a

array([[0, 1, 0],
[0, 0, 1],
[0, 0, 0]])

a=np.eye(4,k=-1,dtype=int)
a

array([[0, 0, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0]])

5. full():full((m,n),c)可以生成一个m×n的元素全为c的矩阵。

a=np.full((2,3),4)
a

array([[4, 4, 4],
[4, 4, 4]])

6.random.random():random.random((m,n))生成一个m×n的元素为0~1之间随机数的矩阵。

a=np.random.random((2,3))
a

array([[0.18286065, 0.49739954, 0.00816374],
[0.07114833, 0.99882232, 0.85993699]])

7.random.randint():numpy.random.randint(low, high=None, size=None, dtype=‘l’) 函数的作用是,返回一个随机整型数,范围从低(包括)到高(不包括),即[low, high)。如果没有写参数high的值,则返回[0,low)的值。

a=np.random.randint(2,size=10)
a

array([1, 1, 0, 0, 1, 0, 0, 0, 1, 1])

b=np.random.randint(4,size=(2,4))
b

array([[2, 1, 0, 0],
[3, 2, 0, 0]])

8. random.rand():random.rand(d0,d1,…,dn) 函数根据给定维度生成[0,1)之间的数据,其中,dn表示每个维度的元素个数。

a=np.random.rand(4,2)
a

array([[0.02335591, 0.84434184],
[0.95469876, 0.65628179],
[0.67500362, 0.20047595],
[0.52385056, 0.87317168]])

9.random.randn():random.randn(d0,d1,…,dn) 函数返回一个或一组样本,具有标准正态分布,其中,dn表示每个维度的元素个数。

a=np.random.randn(4,2)
a

array([[-0.1637063 , 0.10924046],
[ 0.58542562, -0.24893933],
[ 0.57567011, -0.72116581],
[ 1.38331519, -0.37297922]])

10.arange():数值范围创建数组

我们做循环的时候经常会用到range,可以取数值范围,numpy中有个arange函数,可用于创建数组。

a=np.arange(9)
a

array([0, 1, 2, 3, 4, 5, 6, 7, 8])
这样创建的数组只能是一维的,arange函数经常和reshape一起使用(后面还会介绍),可以创建多维的数组。

a=np.arange(9).reshape(3,3)
a

array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])

四、使用astype方法改变数组数据类型

这个我们经常会用到,例如我们把整数数组转换为浮点数数组,使用astype方法,用np.float64和’float64’都可以。

a=np.arange(9).reshape(3,3)
print(a)
b=a.astype(np.float64)
print(b)
print(id(a),id(b))

[[0 1 2]
[3 4 5]
[6 7 8]]
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
115705872 94174832


总结

本文仅仅简单介绍了numpy数组的创建。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值