NumPy学习_00 ndarray的创建

时间:2023-03-10 06:32:58
NumPy学习_00 ndarray的创建

1.使用array()函数创建数组

参数可以为:单层或嵌套列表;嵌套元组或元组列表;元组或列表组成的列表

# 导入numpy库
import numpy as np
# 由单层列表创建
a = np.array([1, 2, 3])
print(a)
[1 2 3]
# 由嵌套列表创建
b = np.array([[1.3, 2.4], [0.3, 4.1]])
print(b)
[[1.3 2.4]
 [0.3 4.1]]
# 由嵌套元组创建
c = np.array((("p", "y", "t"), ("h", "o", "n")))
print(c)
[['p' 'y' 't']
 ['h' 'o' 'n']]
# 由元组列表创建
d = np.array([(3, 2, 1), (7, 8, 9)])
print(d)
[[3 2 1]
 [7 8 9]]
# 由元组或列表组成的列表
e = np.array([(6, 1, 8), [7, 5, 3], (2, 9, 4)])
print(e)
[[6 1 8]
 [7 5 3]
 [2 9 4]]
# array创建数组返回的类型
print(type(a))
<class 'numpy.ndarray'>

2.数据类型

# 数组元素是同质的,即类型和大小都相同
# 数据类型由dtype对象来指定
# itemsize属性,定义了数组中每个元素的长度占几个字节
print(a.dtype.name, a.itemsize)
print(b.dtype.name, b.itemsize)
print(c.dtype.name, c.itemsize)
print(d.dtype.name, d.itemsize)
print(e.dtype.name, e.itemsize)

# array()函数默认根据列表或元素序列中各元素的数据类型,为ndarray对象指定最适合的数据类型。
# 也可以使用dtype选项作为array()的参数,明确指定dtype的类型。
# 如下定义一个复数数组
f = np.array([[1, 2, 3], [4, 5, 6]], dtype=complex)
print("-------------------------")
print(f)
int32 4
float64 8
str32 4
int32 4
int32 4
-------------------------
[[1.+0.j 2.+0.j 3.+0.j]
 [4.+0.j 5.+0.j 6.+0.j]]

3.NumPy库自带的数组创建方法

# zeros()函数生成由shape参数指定维度信息,元素均为0的数组。
# 元素的数据类型为float64
g = np.zeros((3, 3))
print(g)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
# ones()函数与上述函数相似
# 元素的数据类型为float64
h = np.ones((3, 3))
print(h)
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
# arange()函数,按特定规则生成包含一个数值序列的数组。
# arange(begin, end, step)
# 参数begin省略则从0开始
# 参数end应该比序列最后一个值大
# 参数step可以是浮点型
i = np.arange(0, 10)
j = np.arange(10)
k = np.arange(4, 10)
m = np.arange(0, 10, 2)
n = np.arange(0, 10, 1.3)
print(i)
print("-------------------------")
print(j)
print("-------------------------")
print(k)
print("-------------------------")
print(m)
print("-------------------------")
print(n)
[0 1 2 3 4 5 6 7 8 9]
-------------------------
[0 1 2 3 4 5 6 7 8 9]
-------------------------
[4 5 6 7 8 9]
-------------------------
[0 2 4 6 8]
-------------------------
[0.  1.3 2.6 3.9 5.2 6.5 7.8 9.1]
# 结合reshape()函数进行拆分
x1 = np.arange(0, 12).reshape(3, 4)
print(x1)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
# linspace(begin, end, cnt)函数
# 第三个参数表示需要将begin和end范围分成几个部分
x2 = np.linspace(0, 10 , 6)
print(x2)
[ 0.  2.  4.  6.  8. 10.]
# random()函数以随机数填充数组
# 每次生成元素均会有所不同
x3 = np.random.random(3)
x4 = np.random.random((3, 3))
print(x3)
print("------------------------------------------")
print(x4)
[0.8223299  0.83657551 0.797519  ]
------------------------------------------
[[0.14562367 0.8657818  0.96508416]
 [0.15094085 0.27332193 0.52784433]
 [0.0260834  0.3047311  0.65182433]]
#eye(N)函数创建一个NxN单位矩阵(对角线为1,其余为0)
x5 = np.eye(4)
print(x5)
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
# 使用empty()函数返回全0数组的想法是不安全的
x6 = np.empty((2,3))
print(x6)
[[1. 2. 3.]
 [4. 5. 6.]]