numpy数组创建

系列文章目录

numpy的安装与使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

目录

系列文章目录

一、基本的创建方式

1.1、np.array()

 1.2 np.arange()

 1.3 特殊矩阵创建

二、随机函数创建

1. np.random.rand()

2. np.random.random()

3. np.random.randn()

4. np.random.normal() 

5. np.random.uniform() 均匀分布

6. np.random.randint()

7.np.random.choice() 

8. 随机种子和打乱数据 

总结



前言

使用numpy创建各种维度的ndarray对象


提示:以下是本篇文章正文内容,下面案例可供参考

一、基本的创建方式

1.1、np.array()

import numpy as np

list1 = [1, 2, 3, 4, 5]
print(list1)
print(type(list1))

# 将python的List类型转换为numpy的ndarray
array1 = np.array(list1)
print(array1)
print(type(array1))

 np.array()创建多维数组

# 多维数组
array2 = [[1, 2], [3, 4], [5, 6]]
print(array2)
print(type(array2))

# 这是一个二维数组,二维数组即列表中的每个元素都是一个一维列表,
# np.array()函数,参数给了什么样式的数据,就构建什么样式的ndarray
np_array2 = np.array(array2)
print(np_array2)
print(type(np_array2))

 1.2 np.arange()

import numpy as np

# 在原始的python中想要生成一个序列list需要借助range()函数
list1 = list(range(0, 10))  # 这里的0, 10, 2分别代表开始值=0,结束值=10(取不到10),步长=2 -> [start, end) -> [0, 10)
print(list1)

# numpy同样具备这样一个方法,使用np.arange(),用法和range完全一样,但是更加强大
np_list = np.arange(0, 10, 2)  # 同样是[start, end)区间
print(np_list)
# 序列的步长无论是range函数还是np.arange都是可选参数,如果不传入步长那么默认为1
# np.arange()比python中range的强大之处
# 1. 步长可以为浮点数
np_list_step_float = np.arange(0, 10, 0.5)
print(np_list_step_float)
# 2. 步长可以是负值,相当于逆序 start < end 则序列为空,反之就是从大到小的一个序列
np_list_step_negative = np.arange(10, 0, -0.5)
print(np_list_step_negative)

numpy包含python中的功能,但是有比其更加丰富强大 

 1.3 特殊矩阵创建

1.3.1 np.ones()/np.zeros()/np.full()

import numpy as np

# np.ones()/np.zeros()/np.full()

# 创建值全为1的数组
n = np.ones((3, 4))  # 生成一个3行4列的元素全部都是1的二维数组
print(n)

# 创建值全为0的数组
n = np.zeros((3, 4))
print(n)

# 创建值全为某个值得数组
n = np.full((3, 4), -1)  # 第一个参数(shape):维度,第二个参数(fill_value):填充的元素的值
print(n)

1.3.2 np.ones_like()/np.zeros_like()/np.full_like()

按照已有的ndarray数组的形状来创建全零全一数组

import numpy as np
# np.ones_like()/np.zeros_like()/np.full_like()

# 生成一个0-19的一个序列的一维数组,通过reshape操作将数组维度变为5行4列的一个二维数组
n = np.arange(0, 20).reshape((4, 5))
# n = np.arange(0, 20).reshape((4, -1))  # 确定一个维度后-1可以自动计算剩余维度
print(n)

# 创建一个与参数数组形状相同的数组,值全为1
x = np.ones_like(n)  # 复制数组n的维度,保持一样的维度,但是元素都是1
print(x)

# 创建一个与参数数组形状相同的数组,值全为0
x = np.zeros_like(n)  # 复制数组n的维度,保持一样的维度,但是元素都是0
print(x)

# 创建一个与参数数组形状相同的数组,值填充为5
x = np.full_like(n, 5)  # 复制数组n的维度,保持一样的维度,但是元素填充为fill_value:5
print(x)

 1.3.3 空矩阵、单位矩阵、对角阵

import numpy as np
# np.empty()空矩阵
n = np.empty((3, 4))  # 创建一个3行4列的空矩阵
# 这里讲的空矩阵并不是真正的什么也没有,而是没有经过初始化,内容随机,且依赖于内存状态
print(n)

# np.eye()/np.identity()单位矩阵
# np.eye()可以创建一个(N,M)的单位矩阵,
n = np.eye(4, 3)  # 创建一个4行3列的单位矩阵,对角线为1
print(n)

# 当N=M时
n = np.eye(4)  # N=M=4的一个单位方阵
print(n)
# np.eye()还有一个可选参数k
# int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
n = np.eye(4, k=1)
print(n)
n = np.eye(4, k=-1)
print(n)
# np.identity() 这个函数和之前的区别在于,这个只能创建方阵,也就是N=M
n = np.identity(4)
print(n)

# 对角阵np.diag()
# np.diag(v, k) v:主对角线数值,k:对角线的位置默认为0,大于零位于对角线上面,小于零则在下面。

array_diag = np.diag([1, 2, 3, 4])
print(array_diag)
b = np.arange(0, 9).reshape((3, 3))
print(b)
array_diag = np.diag(b)
print(array_diag)
# 可以发现一个有意思的事情,当np.diag()传入一个一维数组,则输出为一个二维的对角阵,
# 当时个二维数组时,输出这个二维矩阵的对角线
array_diag = np.diag([1, 2, 3, 4], k=1)
print(array_diag)
array_diag = np.diag([1, 2, 3, 4], k=-1)
print(array_diag)
# k就是对角阵开始元素位置,自行可以试一试

1.3.4 等差、等比数列 

 

import numpy as np
# arange
nda1 = np.arange(1, 20, 3)  # 生成一个等差数列
# arange关注元素之间的差距
print(nda1)

nda2 = np.linspace(1, 20, 3)  # 生成一个等差数列
# linespace关注的是一共生成多少个元素
print(nda2)

# 创建等差数列的数值
# num指定数组元素的个数。endpoint指定是否包含终止点(默认为True)

line_array = np.linspace(1, 10, 6, endpoint=True, dtype=np.float32)
# 由于可以取左边界,所以中间还需要生成9个元素
print(line_array)
# 生成一个范围在1-10之间,可以取右边界的一个等差数列,每个元素的数据类型float32,一共取10个元素
line_array = np.linspace(1, 10, 10, endpoint=True, dtype=np.int32)
print(line_array)

# np.logspace() 等比数列
# logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
# 创建等比数列数组,前面两个参数(start, stop)指定指数
# num指定数组元素的个数。endpoint是否包含终止点
# base用来指定底数,默认为10
log_array = np.logspace(1, 10, num=10, endpoint=True, base=2)
print(log_array)

arange和linespace都可以产生一系列区间值

对于arange更关注的是数值之间间隔多少,不关注具体会产生多少数值

对于linespace,更关注的是产生的数值的个数,而不太关注数值之间间隔多少 

二、随机函数创建

1. np.random.rand()

用于指定形状的0-1之间的随机数

import numpy as np
# 随机生成一个元素的数组
aa = np.random.rand(1)
print(aa)
# 随机生成几个数据的随机数组
aa = np.random.rand(3)
print(aa)
# 生成指定形状的随机数组
aa = np.random.rand(2, 3)
print(aa)

2. np.random.random()

用法和rand基本一样指定形状是传入的为元组

import numpy as np

aa = np.random.random((2, 3))
print(aa)

3. np.random.randn()

生成服从正态分布的0-1之间的随机数

import numpy as np
# 用法和rand函数一样,只是randn函数是服从正态分布的
aa = np.random.randn(2, 3)
print(aa)

4. np.random.normal() 

指定方差和均值的正态分布

import numpy as np
# np.random.normal()这个函数也可以生成服从正态分布的随机值,而且可以指定均值和方差
# 一共含有三个参数(loc, scale, size), 分别代表生成的高斯分布的随机数的均值、方差和输出多少个数值
# loc: 均值
# scale: 方差
# size: 元素个数
aa = np.random.normal(loc=2, scale=0.2, size=6)
print(aa)
aa = np.random.normal(loc=2, scale=0.2, size=(6, 6))
print(aa)

5. np.random.uniform() 均匀分布

# 均匀分布
# 生成1-10之间的5个随机数,可以包含1,但是不包含10
aa = np.random.uniform(1, 10, 5)
print(aa)
# 生成指定形状的数值
aa = np.random.uniform(1, 10, (3, 2))
print(aa)

6. np.random.randint()

 生成随机整数

# np.random.randint()随机整数
# 在1-10范围内, 随机生成5个int32类型的数值。生成的结果集可能出现重复数据
aa = np.random.randint(1, high=10, size=5, dtype=np.int32)
print(aa)
# 生成一个指定范围的随机二维数组
aa = np.random.randint(1, high=10, size=(3, 2), dtype=np.int32)
print(aa)

7.np.random.choice() 

从指定数据集中,随机抽选一个数据

import numpy as np
# np.random.choice()从指定数据集中,随机抽选一个数据
# 从数值集合中,按照指定概率生成随机数,参数p的总和一定要是1
aa = np.random.choice([1, 2, 3, 4], p=[0.1, 0.2, 0.3, 0.4])
print(aa)

# 检测是不是按照概率生成的
list1 = [0, 0, 0, 0]
for i in range(100000):
    aa = np.random.choice([1, 2, 3, 4], p=[0.1, 0.2, 0.3, 0.4])
    list1[aa - 1] = list1[aa - 1] + 1
# 打印每个数值出现的次数
print(list1)
# 计算每个值出现的概率
result_list = [value/sum(list1) for value in list1]
print(result_list)

8. 随机种子和打乱数据 

import numpy as np
# seed()用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值, 则每次生成的随机数都相同
# 如果不设置这个值,则系统根据时间自己选择这个值,此时每次生成的随机数因时间差异而不同
np.random.seed(0)
aa = np.random.rand(2, 3)
np.random.seed(0)
bb = np.random.rand(2, 3)
print(aa, bb)

# np.random.shuffle()打乱数据
aa = np.arange(10)
print(aa)
# 打乱数据
np.random.seed(0)  # 指定随机种子,打散数据可以复现
np.random.shuffle(aa)
print(aa)

aa = np.arange(10)
np.random.seed(0)
np.random.shuffle(aa)
print(aa)

总结

提示:这里对文章进行总结:
本篇主要讲解了常用的numpy创建数组的方式

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用pandas库中的DataFrame函数从numpy数组创建DataFrame。具体步骤如下: 1. 导入pandas库和numpy库 ```python import pandas as pd import numpy as np ``` 2. 创建numpy数组 ```python arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) ``` 3. 使用DataFrame函数创建DataFrame ```python df = pd.DataFrame(arr, columns=['A', 'B', 'C']) ``` 其中,arr是numpy数组,columns是DataFrame的列名。 最终得到的DataFrame如下所示: ``` A B C 1 2 3 1 4 5 6 2 7 8 9 ``` ### 回答2: 在Pandas中,DataFrame是最常用的数据结构之一,它是一个二维的表格型数据结构,可以容纳不同类型的数据,并且可以在其中执行各种操作。Numpy数组是另外一个非常重要的数据结构,它提供了高效的数学计算和大规模数据处理所需要的基础。因此,将Numpy数组转换为DataFrame是很有意义的,以下是从Numpy数组创建DataFrame的步骤: 1. 导入numpy和pandas库。首先需要在程序中导入相应的库,例如 import numpy as np 和 import pandas as pd。 2. 创建Numpy数组。接下来,需要使用numpy创建一个Numpy数组。可以使用numpy库中的arange()函数、linspace()函数或random模块中的函数来创建数组。 3. 将Numpy数组转换为DataFrame。创建Numpy数组之后,可以使用pandas库中的DataFrame()函数将Numpy数组转换为DataFrame。其中,pandas.DataFrame()函数接受一组数组、字典或Series作为输入,并返回一个DataFrame对象。可以使用columns参数指定列标签。 下面是一个简单的示例来帮助您更好地理解这些步骤: ``` python import numpy as np import pandas as pd # 创建Numpy数组 data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 将Numpy数组转换为DataFrame df = pd.DataFrame(data, columns=['col1', 'col2', 'col3']) print(df) ``` 输出结果为: ``` col1 col2 col3 0 1 2 3 1 4 5 6 2 7 8 9 ``` 在这个示例中,我们创建了一个3x3大小的Numpy数组,并将它转换为一个名为df的DataFrame。在转换过程中,我们使用了pandas.DataFrame()函数并指定列标签为['col1', 'col2', 'col3']。之后,我们打印出DataFrame df的所有值。 最后,从Numpy数组创建DataFrame是一个很有用的技能,可以帮助我们更好地利用pandas和numpy库进行数据分析和数据处理。如果您对如何处理数据感兴趣,那么可以通过学习这些库的更多特性来提高自己的技能和效率。 ### 回答3: 在数据处理和分析中,numpy和pandas是两个非常重要的工具。pandas是基于numpy构建的数据分析库,它能够处理数据中的缺失值等问题,同时也提供了一些更方便的数据结构和API。在pandas中,DataFrame是一种非常常用的数据结构,因为它能够自动地将numpy数组转化为类似表格的数据结构。 从numpy数组创建DataFrame非常简单,只需调用pandas中的DataFrame函数即可,下面是详细步骤: 首先,导入numpy和pandas两个库: import numpy as np import pandas as pd 然后,创建一个2行3列的numpy数组,作为DataFrame的数据: array = np.array([[1,2,3],[4,5,6]]) 接着,将该数组转化为DataFrame: df = pd.DataFrame(array) 这个DataFrame有两行三列,和原来的numpy数组形状相同。DataFrame默认会自动为每列分配索引,但是你可以自己指定: df = pd.DataFrame(array, index=['row1', 'row2'], columns=['col1', 'col2', 'col3']) 这个DataFrame的行索引为 “row1” 和 “row2”,列索引为 “col1”、“col2” 和“col3”。 总的来说,从numpy数组创建DataFrame非常简单,只需调用pandas的DataFrame函数,并将numpy数组作为输入即可。 DataFrame可以自动分配索引,但也可以手动指定索引。如果你经常使用numpy来处理数据,将数据转化为pandas DataFrame格式会让你更方便地进行数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值