Numpy 使用数组储存其他数组
什么是Numpy Array
Numpy Array是NumPy中的一种数据结构,它是由相同类型的元素组成的多维数组。Numpy Array比Python中的列表(list)在处理数值运算方面更为高效,并且可以进行很多数组运算。由于Numpy Array是在内存中连续储存的,因此能够快速的访问数组元素。
我们可以先来看一个简单的例子,以帮助更好地了解Numpy Array是怎样工作的:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b])
print(c)
运行以上代码将会输出:
[[1 2 3]
[4 5 6]]
从输出结果来看,可以发现c是一个数组,且它包含两个数组a和b。这里的数组a、b和c都是Numpy Array。
阅读更多:Numpy 教程
Numpy Array of arrays
在Numpy Array中,也可以使用数组储存其他数组,我们称之为Numpy Array of arrays。这种数据结构与普通的Numpy Array有些不同,但在NumPy中仍然可以像普通的Numpy Array那样进行处理。下面的例子将帮助你更好地理解什么是Numpy Array of arrays。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b])
d = np.array([c, a])
print(d)
运行以上代码将会输出:
[[[1 2 3]
[4 5 6]]
[[1 2 3]
[4 5 6]]]
在这个例子中,我们首先定义了两个数组a和b,然后我们通过将a和b组合形成了数组c。而数组d是通过将数组c和数组a再次组合形成的一个更高级别的数组。
如何创造一个 Numpy Array of arrays
使用NumPy,我们可以使用多种方式创建Numpy Array of arrays,下面是一些例子:
- 使用合并函数
我们可以使用 numpy.concatenate() 和 numpy.stack() 函数将数组合并成Numpy Array of arrays。下面是一些例子:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate((a, b))
print(c)
d = np.stack((a, b))
print(d)
运行以上代码会输出:
[1 2 3 4 5 6]
[[1 2 3]
[4 5 6]]
- 创建一个空的Numpy Array,然后向它添加数组
另一种创建Numpy Array of arrays的方式是首先创建一个空数组,然后将其他数组添加到该数组中。下面是一个例子:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.empty((2, 3), dtype=object)
c[0] = a
c[1] = b
print(c)
运行以上代码将会输出:
[[1 2 3]
[4 5 6]]
如何访问 Numpy Array of arrays
访问Numpy Array of arrays的方式与访问其他类型的Numpy Array是相同的。下面是一个例子:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b])
print(c[0]) # 输出 [1 2 3]
print(c[1]) # 输出 [4 5 6]
此外,如果我们使用Numpy Array of arrays作为函数的输入参数,我们也可以按自己的需要来循环访问其中的元素。下面是一个例子:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b, np.array([7, 8, 9])])
def print_arrays(arrays):
for array in arrays:
print(array)
print_arrays(c)
输出结果:
[1 2 3]
[4 5 6]
[7 8 9]
如何操作 Numpy Array of arrays
与普通的Numpy Array类似,Numpy Array of arrays可以进行多种数组操作,例如:
- 形状操作
我们可以使用reshape()函数改变数组的形状。在Numpy Array of arrays中,我们还可以使用transpose()函数来转置数组的形状。下面的例子展示了如何使用reshape()和transpose()函数:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b])
d = c.reshape(3, 2)
print(d)
e = c.transpose()
print(e)
输出结果:
[[1 2]
[3 4]
[5 6]]
[[1 4]
[2 5]
[3 6]]
- 数组运算
Numpy Array of arrays可以进行各种数组运算,包括逐元素运算、矩阵运算等。下面是一些例子:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([a, b])
d = c.sum(axis=0) # 计算每列的和
print(d)
e = c + 1 # 对每个元素加1
print(e)
f = np.dot(c, c.T) # 对c的转置与c做矩阵乘法
print(f)
输出结果:
[5 7 9]
[[2 3 4]
[5 6 7]]
[[14 32]
[32 77]]
总结
Numpy Array of arrays 是一种由Numpy Array组成的数据结构。通过Numpy Array of arrays,我们可以更直观地看到多维数组之间的关系,并可以方便地按我们的需求访问其中的元素。同时,与普通的Numpy Array类似,Numpy Array of arrays也可以进行多种数组操作。熟练掌握Numpy Array of arrays可以让我们更高效地处理多维数组的问题,从而提高数据分析的效率。
极客笔记