Python高阶——Numpy创建ndarray

Python高阶——Numpy创建ndarray

如何导入Numpy

使用Numpy功能之前要先导入numpy模块,方法如下:

import numpy as np#

Python 列表和 NumPy 阵列有什么区别

python列表中的单个数据可以是不同数据类型的
Numpy中所有的元素必须是同类型的
Numpy存储数据所占的内存更小

用np.array() 创建一个 ndarray对象

要创建一个简单的数组对象,即向np.arrray()中传递一个元素类型相同的列表或嵌套列表,如果类型不同,会自动调整成相同类型
可以指定类表中的元素数据类型

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  1. object:列表或嵌套列表
  2. dtype:数组元素的数据类型
  3. copy:对象是否需要复制
  4. order:C——行方向,F——列方向,A——任意方向(默认)
  5. subok:默认返回一个与基类型一致的数组
  6. ndmin:指定生成数组的最小维度
import numpy as np
'''np.array()列表嵌套列表创建数组'''
#传入列表创建数组
a1 = np.array([1,2,3,4])
print('传入列表创建的数组:\n',a1)
#指定最小维度
a2 = np.array([1,2,3,4],ndmin=3)
print('指定了最小维度的数组:\n',a2)

#传入嵌套列表(多于一个维度)
a3 = np.array([[1,2,3],[3,2,1]])
print('多于一个维度的数组:\n',a3)

#指定数组中元素的dtype(类型)
a2 = np.array([1,2,3,4],dtype=str)
print('指定了dtype的数组:\n',a2)

打印:
在这里插入图片描述

创建数组

1、np.empty()创建指定形状、数据类型,且没有初始化的数组

语法:

numpy.empty(shape, dtype = float, order = 'C')
numpy.empty_like(prototype, dtype=None, order=None,subok=True, shape=None)
  1. share:数组形状
  2. dtype:数据类型,可选
  3. order:在计算机中存储元素的顺序,C——行优先,F——列优先
  4. prototype:原型
    数组元素随机,因为没有初始化
#创建空数组
b = np.empty([3,2],dtype=int)
print('numpy.empty()创建的int型空数列:\n',b)
b2 = np.empty_like(b,dtype=int)
print('numpy.empty()创建的int型空数列:\n',b2)

在这里插入图片描述

2、np.zeros()创建一个全0数组

创建指定大小数组,数组元素用0来填充
用dtype=指定元素类型,默认为float
语法结构:

numpy.zeros(shape, dtype = float, order = 'C')
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
'''np.zeros()创建全0数组'''
c1 = np.zeros((4,4),dtype=int)#也可以指定类型
print('由0组成的数组a:\n',c1)
print('-------------------------------------------')
c2 = np.zeros_like(c1,dtype=int)#以c1为原型创建一个全0数组
print('用zeros_like()以c1为原型创建一个全0数组:\n',c2)

在这里插入图片描述

3、np.ones()创建一个全1数组

创建指定形状的数组,数组元素用1来填充
数据类型默认为:fioat
语法结构:

numpy.ones(shape, dtype = float, order = 'C')
numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

4、numpy.asarray ()从已有数组创建数组

语法结构:

numpy.asarray(a, dtype = None, order = None)
  1. a :任意形式的传入参数,可以是
    • 列表
    • 元组
    • 元组的元组
    • 元组的列表
    • 多维数组
  2. dtype:数据类型
  3. oder:数据在计算机中存储顺序,C\F——>行优先/列优先
    实例:

1、列表转ndarray:

#列表转ndarray
lis = [1,2,3,4]
a = np.asarray(lis)
print('列表转的ndarray:\n',a)

在这里插入图片描述

元组转ndarray

#元组转ndarray
tup = (1,2,3,4)
b = np.asarray(tup)
print('元组转的ndarray:\n',b)

在这里插入图片描述

元组列表转ndarray

列表里的元组不等长时,一的元组作为一个元素
VisibleDeprecationWarning:从不规则嵌套序列(即由不同长度或形状的列表或元组或元组组成的列表或元组)创建ndarray已弃用。如果你想这样做,你必须在创建ndarray时指定’dtype=object’。

#元组列表转ndarray
x = [(1,2,3),(5,6)]
c = np.asarray(x,dtype='')
print('元组列表转的ndarray:\n',c)

在这里插入图片描述

元组的元组转ndarray

元组里的元组等长时
最内层元组里的一个数据作为一个数据项

#元组的元组转ndarray
x = ((1,2,3),(4,5,6),(7,8,9))
a = np.asarray(x)
print(a)

在这里插入图片描述

多维数组创建ndarray

numpy.frombuffer()实现动态数组

numpy.frombuffer()接收buffer传入参数,以流的形式读入转换成ndarray对象

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
  1. buffer:可以是任意对象
  2. dtypr:返回数组的数据类型
  3. count:读取数据数量,默认为-1,读取全部元素
  4. offset:读取的起始位置,默认为0
    注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在
    原 str 前加上 b。
print('转换成bytestringleixing')
s = b'Hello world'#转换成bytestringleixing
a = np.frombuffer(s,dtype='S1')
print(a)
print('---------------------')
print('不转换为Unicode类型时')
s =  'Hello World' 
a = np.frombuffer(s, dtype =  'S1')  
print (a)

在这里插入图片描述

numpy.fromiter从迭代器对象中建立ndarray,返回一维数组

语法结构:

numpy.fromiter(iterable, dtype, count=-1)
  1. iterable:可迭代对象
  2. dtype:返回数组的数据类型
  3. count:读取数据数量,默认为-1,读取全部元素
#使用# 使用 range 函数创建列表对象
lis = list(range(5))
#创建一个迭代器
it = iter(lis)
#使用迭代器创建 ndarray
x = np.fromiter(it,dtype=float)
print(x)

在这里插入图片描述

从数值范围创建数组

numpy.arange()

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象
语法结构:

numpy.arange(start, stop, step, dtype)
  1. dtype:返回ndarray数据类型,如果没有提供,则使用chuanrudeshujv类型
#生成 0 到 5 的数组:
x = np.arange(5)
print('numpy.arange()生成 0 到 5 的数组\n',x)

#设置返回类型位 float:
x2 = np.arange(5,dtype=float)
print('numpy.arange()生成 0 到 5 的返回类型为 float:数组\n',x2)
#设置了起始值、终止值及步长
x3 = np.arange(10,20,2,dtype=int)
print('numpy.arange()生成 10 到 20,步长为2, 的返回类型为 int:数组\n',x3)

在这里插入图片描述

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)
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

企鹅家的北极熊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值