numpy数组对象ndarry

<<学习笔记>>

一.创建数组对象

import numpy as np
#  导入numpy重新命名为np

1.数组创建

"""
np.array(object, dtype=None,copy=True,order='K',subook=False,ndmin=0)
参数介绍:
object:接收array,需创建的数组,无默认。
dtype:接收data-type,需创建的数据类型。
ndmin:接收int,创建的数组应具有的最小维数。
"""
"""
创建一维数组[1,2,3]
"""
a = np.array([1,2,3])
#等同于:
a = np.arange(1,4)
"""
创建二维数组[[1,2,3][4,5,6]]
"""
b = np.array([[1,2,3],[3,4,6]])
#等同于:
b = np.arange(1,7).reshape(2,3)

"""
创建等差数组
"""
c = np.linspace(0,10,10,endpoint=False)
print(c)
#结果:[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

"""
创建等比数组
"""
d = np.logspace(0,10,10,endpoint=False)
print(d)
#结果:[1.e+00 1.e+01 1.e+02 1.e+03 1.e+04 1.e+05 1.e+06 1.e+07 1.e+08 1.e+09] 默认底数base为10
d = np.logspace(0,10,10,endpoint=False,base=2)
print(d)
#结果:[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.] 底数为2

2.数组属性

"""
ndim:返回int,表示数组维数
shape:返回tuple,表示数组的尺寸,n行m列矩阵,(n,m)
size:返回int,数组元素个数
dtype:返回datatype,数组中元素类型
itemsize:返回int,数组元素的大小(单位:字节)
"""
a = np.arange(10)
print(a.shape)
#结果:(10,)表示一维数组10个元素
b = np.arange(6).reshape(3,2)
print(b.ndim)
#结果:2 表示2维数组
print(b.size)
#结果:6 表示6个元素
print(b.dtype)
#结果:int32 元素类型
print(b.itemsize)
#结果:4 数组元素大小4个字节

3.数组数据类型

"""
类型|  描述
bool   True/False
inti   int32/int64
int8   整数,-128~127
int16  整数,-32768~32767
int32  整数,-2^31~2^32-1
"""
"""
数组数据类型转换
例1
"""
a = np.array([1,2,3])
print(a.dtype)
#结果:int32
b = np.int8(a)
print(b.dtype)
#结果:int8
"""
数组数据类型转换
例2
"""
a = np.array([1,2,3,4],dtype=np.int8)
print(a.dtype)
#结果:int8
b = np.int32(a)
print(b.dtype)
#结果:int32

二.生成随机数

import numpy as np
#  导入numpy重新命名为np
"""
生成随机数方法都在np.random模块下
"""

1.无约束生成随机数

"""
无约束生成随机数
np.random.random(size)
"""
a = np.random.random((3,2,2))
print(a)
#结果:生成一个三个两行两列的随机数数组

2.生成服从均匀分布随机数

"""
生成服从均匀分布随机数
np.random.rand(n,m,k···)
"""
b = np.random.rand(3,2)
print(b)
#结果:生成一个服从均匀分布三行二列数组

3.生成服从正态分布随机数

"""
生成服从正态分布随机数
"""
c = np.random.randn(3,2,2)
print(c)
# 结果:生成三个服从正态分布的两行两列数组

4.生成给定范围的数组

"""
生成给定范围的数组
np.random.randint(star,end,size)
"""
d = np.random.randint(0,10,(3,2))
print(d)
#结果:生成一个三行两列数值范围为0-10的随机数数组

三.索引

"""
注意:数组下标从零开始
"""

1.一维索引

"""
一维索引
"""
a = np.arange(10)
print(a[9])
#结果:[9]
print(a[0:2])
#结果:[0 1]
print(a[5:])
#结果:[5 6 7 8 9]
print(a[5:-1])
#结果:[5 6 7 8]
print(a[5:-1:2])
#结果:[5 7]

2.多维索引

"""
二维索引
"""
a = np.random.rand(6).reshape(3,2)
print(a)
#结果:3行2列服从均匀分布数组
print(a[2,1])
#结果:第2行第1列的数值
print(a[2,:])
#结果:输出第2行

四.变换数组形态

1.reshape函数

"""
使用reshape改变数组形状
"""
a = np.array([1,2,3,4,5,6]).reshape(2,3)
# 数组a就变成一个2行3列数组

2.flatten函数展平数组

"""
使用flatten函数展平数组
arr.flatten() #横向展开
arr.flatten(order="F") #纵向展开
"""
a = np.arange(6).reshape(2,3)
print("数组a",a)
b = a.flatten() #横向展开
c = a.flatten(order="F") #纵向展开
print("横向展开",b)
print("纵向展开",c)
#结果:
#数组a [[0 1 2][3 4 5]]
#横向展开 [0 1 2 3 4 5]
#纵向展开 [0 3 1 4 2 5]

3.组合数组

"""
1.横向组合:
np.hstack((arr1,arr2))
np.concatenate((arr1,arr2),axis=1)

2.纵向组合:
np.vstack((arr1,arr2))
np.concatenate((arr1,arr2),axis=0)
"""
a = np.arange(6).reshape(3,2)
b = np.arange(2,8).reshape(3,2)
c=np.hstack((a,b))
print("横向组合a,b",c)
#结果:[[0 1 2 3][2 3 4 5][4 5 6 7]]

4.分割数组

"""
1.横向切割:
np.hsplit(arr,2)
np.split(arr,2,axis=1)

2.纵向切割:
np.vsplit(arr,2)
np.split(arr,2,axis=0)
"""
a = np.arange(16).reshape(4,4)
b = np.split(a,2,axis=1)
c = np.split(a,2,axis=0)
print("横向切割",b)
print("纵向切割",c)
'''
#结果:
横向切割 [array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]
纵向切割 [array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]
'''

5.英语角

1.flatten 变平,推倒
2.stack 一堆,一叠
3.concatenate 连在一起,连锁
4.split 分裂,分割

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值