Python数据分析(3)-numpy中nd数组的创建
在进行Python数据分析时,我们常常需要使用到numpy库。而numpy中最基本也是最重要的数据结构就是ndarray(N-dimensional array),即多维数组。通过对ndarray对象的操作,我们可以实现高效、快速地处理大量数值型数据。
那么,在使用过程中如何创建一个ndarray呢?下面我们将介绍几种不同方式。
1. 从list或tuple转换
第一,可以用list或者tuple来初始化一个一维或者二维的数组:
```python
import numpy as np
# 一维数组
a = np.array([1,2,3])
print(a)
# 二位数组
b = np.array([(1.5,2,3), (4,5,6)])
print(b)
```
输出结果为:
[1 2 3]
[[1.5 2. 3. ]
[4. 5. 6. ]]
其中第一个例子里面传入了一个列表 [1,2,3] ,然后np.array()函数将其转化成了一个包含三个元素的一位 ndarray 对象。第二个例子则传入了两个元组作为参数,并且这些元组都有三个浮点数类型数字。函数会自动推断出这应该生成一个 $n\times m$ 的矩阵。
此外,如果你想知道每个元素所占据空间大小(以字节为单位),可以使用itemsize属性:
print(a.itemsize)
4
这个例子中,数组 a 中每个元素占据4字节的空间(因为默认情况下,numpy 会使用32位整数)。
2. 使用特殊函数创建
除了从list或tuple转换外,我们也可以用一些内置的 numpy 函数来初始化一个数组。其中最常用的是 zeros() 和 ones() ,它们分别生成全零和全1矩阵:
c = np.zeros((3,4))
print(c)
d = np.ones((2,3,4),dtype=np.int16)
print(d)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[[1,1,1],
[1,1,1],
[1,]]]
此外还有一些其他函数,比如 empty() 可以创建一个没有任何具体值的数组;eye() 则可以生成单位矩阵。
3、使用arange函数创建
如果需要按指定间隔在指定范围内生成序列,则可通过arange函数实现。其产生一个一维数组,并且参数必须是浮点数类型。
e = np.arange(10) # 类似于range()
print(e)
f = np.arange(10,dtype=float) # 指定数据类型
print(f)
g = np.arange(2,10,2) # 指定起始值、终止值(不包括),以及步长
print(g)
[0 1 2 3 4 5 6 7 8 9]
[0.00e+000 nan nan ... nan nan -inf]
[2,4,6,8]
需要注意的是,由于浮点数精度有限,arange() 函数可能无法预测生成的元素个数。因此在这种情况下最好使用 linspace() 函数。
总结
本文介绍了 numpy 中nd数组的创建方法,包括从list或tuple转换、使用特殊函数创建和使用arange函数创建等。对于初学者来说,掌握这些基础知识是进行Python数据分析中非常重要的一步。
同时,在实际应用过程中还可以通过reshape()函数改变数组形状、利用切片操作获取指定部分数组等进一步扩展功能。希望大家能够通过学习更多numpy相关知识,提升自己在数据处理方面的能力!