Numpy数组创建及变换

创建数组

import numpy as np

ls = [[1, 2, 3], [4, 5, 6]]
print(np.array(ls, dtype=np.int32))               # 把列表转为数组,dtype指定数组元素的数据类型

print(range(1, 10, 2))                            # range函数只能生成整数序列
print(np.arange(1, 10, 2, dtype=np.float32))      # 创建等间隔整数序列数组,等同于内置的range函数
print(np.arange(1.5, 10, 1.5, dtype=np.float32))  # 创建等间隔小数序列数组

a1 = np.ones((2, 3), dtype=np.int8)               # 创建全1数组
a2 = np.zeros((2, 3), dtype=np.float32)           # 创建全0数组
a3 = np.full((2, 3), 6, dtype=np.int8)            # 创建全值数组
print('a1:', a1, 'a2:', a2, 'a3:', a3, sep='\n')

a4 = np.linspace(1, 10, 7, endpoint=True)         # 创建指定元素数量的一维数组,包含起止点,第三个参数为数组元素的总数量
print('a4:', a4)

# 从函数创建数组
f = lambda m, n: m + n
a5 = np.fromfunction(f, (3, 3))   # 每个元素为行列索引值的和
f2 = lambda m, n: m * 2 + n
a6 = np.fromfunction(f2, (3, 3))  # 每个元素为行索引值的2倍与列索引值的和
print('a5:', a5)
print('a6:', a6)

数组的属性

ls = [[1, 2, 3], [4, 5, 6]]
a = np.array(ls, dtype=np.uint8)
print(a.ndim)   # 数组维度值
print(a.shape)  # 数组形状
print(a.size)   # 数组元素数量
print(a.dtype)  # 数组元素的数据类型

数组维度转换

# 数组重排
import numpy as np

a = np.arange(6)
print(a)
a1 = a.reshape(2, 3)  # 返回原数组的视图
a1[0] = 100
print(a)
print(a1)
a.resize(3, 2)        # 在位修改原数组,没有返回值
print(a)

a2 = a.ravel()        # 把数组折叠成一维,返回原数组的视图
a2[:] = 200
print(a)
print(a2)
a3 = a.flatten()      # 把数组折叠成一维,生成新的独立数组
a3[:] = 300
print(a)
print(a3)

b = np.array([1, 2, 3])
b1 = b[:, np.newaxis]  # 增加一个维度,返回原数组的视图
b1[0] = 100
print(b)
print(b1)
b2 = b[np.newaxis, :]  # 增加一个维度,返回原数组的视图
b2[0] = 200
print(b)
print(b2)

数组的数据类型转换

# 数据类型
import numpy as np

# 通常没有必要明确选择需要的数据类型的位数,声明数组是整数、浮点数即可
a = np.ones((2, 3))
print(a.dtype)

# numpy数组是同质、带数据类型的、固定长度的。数组的长度不可变。
# 数组的数据类型
a = np.array([1, 2, 3], dtype=int)  
a1 = np.array(a, dtype=float)       # 默认float64
a2 = a.astype(np.float32)           # 返回一个数组
print(a.dtype, a1.dtype, a2.dtype)

数组转列表

a = np.full((2, 3), 6)
ls = a.tolist()         # 数组转列表
print(ls)
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值