ndarray 的随机创建
# 导入numpy,别名是np
import numpy as np
# 导入matplotlib,别名plt
import matplotlib.pyplot as plt
# random表示常见随机数,rand表示创建一个随机的浮点数数组,参数的个数表示数组维度的大小
# 默认区间是 0.0 ~ 1.0 之间
arr = np.random.rand(3, 4)
print(arr)
print(type(arr))
# ndim 参数表示数组的维度
print(arr.ndim)
# shape 参数表示数据的大小
print(arr.shape)
# dtype表示每个数据的类型
print(arr.dtype)
[[0.94220871 0.74186447 0.53216842 0.75124837]
[0.84167253 0.74518585 0.53711758 0.44215205]
[0.52081119 0.09454015 0.2598748 0.72548184]]
<class 'numpy.ndarray'>
2
(3, 4)
float64
# 生成一个符合标准正态分布的随机抽样浮点数数组
arr = np.random.randn(10000)
#print(arr)
plt.hist(arr, bins=100, color = "red", alpha= 0.5)
plt.show()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kecJaiMI-1582981446551)(output_3_0.png)]
# 创建一个3行4列的二维整数数组,每个元素的值的区间在 -10 ~ 20 之间
arr = np.random.randint(-10, 20, size = (3, 4)) # size = 可以省略不写
print(arr)
[[ 5 -9 8 6]
[ 6 4 -5 14]
[ 9 -3 -2 -4]]
# 创建一个3行4列的二维浮点数数组,每个元素的值的区间在 -10 ~ 20 之间
arr = np.random.uniform(-10, 20, (3, 4)) # size = 可以省略不写
print(arr)
[[-5.31653742 17.60424788 -2.15918047 10.7267352 ]
[15.98828358 11.01419506 19.42791881 -4.70008625]
[-9.53556515 -5.77644849 -9.29554531 2.76408256]]
ndarray的序列创建
# lis 是range类型,包含了 0 ~ 10 的数据的迭代器
lis = range(10)
#把 lis 做为np.array()的参数,则会创建一个包含 0 ~10 的10个元素的一维数组
arr = np.array(lis)
print(arr)
[0 1 2 3 4 5 6 7 8 9]
# array() 参数可以是多维的数组
# 下面示例:表示创建了一个三维数组,数组里包含了两个二维数组,
# 每个二维数组包含了两个一维数组,
# 每个一维数组里包含了10个元素
arr2 = np.array([[lis, lis],[lis, lis]])
print(arr2)
[[[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]]
[[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]]]
# 创建一个3行4列的二维数组,默认呢数组的每个元素都是float64类型的 0
# 第二个参数可以指定数据类型
arr3 = np.zeros((3, 4), int)
print(arr3)
print(arr3.dtype)
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
int64
# 创建一个3行4列的二维数组,默认数组的每个元素都是float64类型的 1
# 第二个参数可以指定数据类型
arr4= np.ones((3, 4), int)
print(arr4)
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
# 初始化数组,不指定具体数值,里面的值有可能是0,有可能不是0,默认数组的每个元素都是float64类型的
# 第二个参数可以指定数据类型
arr5 = np.empty((3, 4), int)
print(arr5)
[[-4605700129439043605 4625648372944239128 -4611327575865235492
4622228233136338178]
[ 4625190221550756326 4622390058650579836 4626161690677406688
-4606394191753766578]
[-4601814372844694916 -4605182315606924735 -4601949492001803647
4613406579389571960]]
ndarray 的arage 和reshape
# 等同于先创建一个列表,再使用array方法来创建数组
arr = np.arange(10)
print(arr)
[0 1 2 3 4 5 6 7 8 9]
# reshape 用来调整原数组的维数,但是元素个数的总数不变
arr2 = arr.reshape(2, 5)
print(arr2)
[[0 1 2 3 4]
[5 6 7 8 9]]
# 将十个元素的一维数组改变成 一个三维数组
arr3 = arr.reshape(1, 2, 5)
print(arr3)
[[[0 1 2 3 4]
[5 6 7 8 9]]]
# 随机打乱原数组的序列
np.random.shuffle(arr)
print(arr)
print(arr.reshape(2, 5))
[2 1 5 9 7 6 0 4 8 3]
[[2 1 5 9 7]
[6 0 4 8 3]]
数组的数据类型转换
zeros_float = np.zeros((3, 4))
print(zeros_float)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
zeros_int = zeros_float.astype(np.int32)
print(zeros_int)
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]