Mus*_*Mus 5 python numpy multidimensional-array
我构建了一个类,对未来的数据进行了一些迭代.数据采用数组形式,不使用numpy对象.在我的代码上,我经常.append用来创建另一个数组.在某些时候,我将一个大数组1000x2000更改为numpy.array.现在我在出错后出错了.我开始将所有数组转换为ndarray,但是评论.append不再起作用了.我开始遇到指向行,列或单元格的问题.并且必须重建所有代码.
我试着回答一个问题的答案:"使用ndarray超过正常数组的优点和优势"我找不到合理的答案.你能写什么时候我应该开始使用ndarrays吗?如果在你的练习中你使用它们或只坚持一个.
很抱歉,如果问题是新手级别,但我是python的新手,只是尝试从Matlab移动并想了解什么是利弊.谢谢
NumPy和Python数组共享高效存储在内存中的属性.
NumPy数组可以加在一起,乘以一个数字,你可以在一个函数调用中计算所有值的正弦值,等等.正如HYRY指出的那样,它们也可以有多个维度.你不能用Python数组做到这一点.
另一方面,Python数组确实可以附加到.需要注意的是NumPy的阵列,然而,可以连接在一起(hstack(),vstack(),...).也就是说,NumPy数组主要是为了拥有固定数量的元素.
通常首先迭代地构建一个列表(或Python数组),然后将其转换为NumPy数组(numpy.array()或者,更有效地numpy.frombuffer(),如HYRY所提到的):这允许对数组(或矩阵)进行数学运算非常方便地执行(复杂操作的简单语法).或者,numpy.fromiter()可以用于从迭代器构造数组.或者loadtxt()从文本文件构造它.
使用NumPy阵列至少有两个主要原因:
是的,您不能简单地将列表转换为NumPy数组,并期望您的代码继续工作.方法不同,bool语义不同.为了获得最佳性能,即使是算法也可能需要更改.
但是,如果您正在寻找Matlab的Python替代品,您肯定会找到NumPy的用途.值得学习.
array.array可以动态改变大小.如果您从某些来源收集数据,最好使用array.array.但array.array只是一个维度,并且没有与它有关的计算函数.因此,当您想对数据进行一些计算时,将其转换为numpy.ndarraynumpy中的函数.
numpy.frombuffer可以创建一个numpy.ndarray与array.array对象共享相同数据缓冲区,它很快,因为它不需要复制数据.
这是一个演示:
import numpy as np
import array
import random
a = array.array("d")
# a for loop that collects 10 channels data
for x in range(100):
a.extend([random.random() for _ in xrange(10)])
# create a ndarray that share the same data buffer with array a, and reshape it to 2D
na = np.frombuffer(a, dtype=float).reshape(-1, 10)
# call some numpy function to do the calculation
np.sum(na, axis=0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |