python中的二维数组,主要有 list(列表) 和 numpy.ndarray(多维数组) 两种, 两种的区别主要体现在numpy.ndarray 支持更多的索引方式,下面通过代码来看一下两种数据类型索引方式的区别:

import numpy as np
a=[[1,2,3], [4,5,6]]
type(a)
<type 'list'>
[[1, 2, 3], [4, 5, 6]]
b=np.array(a)
type(b)
<type 'numpy.ndarray'>
array([[1, 2, 3],
       [4, 5, 6]])

接着对a 和b 中的元素进行访问:

[4, 5, 6] array([4, 5, 6]) a[1][1] b[1][1] a[1][:] [4, 5, 6] b[1][:] array([4, 5, 6]) #下面就是两者的区别 a[1,1] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list indices must be integers, not tuple b[1,1] a[:,1] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list indices must be integers, not tuple b[:,1] array([2, 5])

可以看到numpy.ndarray 比list的访问方式更灵活,因此在处理数据时,可以通过np.array()方便的将list转化为numpy.ndarray, 当然处理完后还可以通过tolist()将ndarray再转回列表,从而方便删除或添加元素。

import numpy as np
a=[[1,2,3],[4,5,6]]
type(a)
<type 'list'>
b=np.array(a)
type(b)
<type 'numpy.ndarray'>
c=b.tolist()
type(c)
<type 'list'>



作者:素娜93
链接:https://www.jianshu.com/p/f8e6a0a6399f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接:https://www.jianshu.com/p/f8e6a0a6399f array和asarray都可以将结构数据化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。 1.输入为列表时 a=[[1,2,3],[4,5,6],[7,8,9]] b=np.array(a) c=np.asarray(a) a[2]=1 print(a) print(b) print(c) 从中我们可以看出np.array与np.asarray功能是一样的,都是将输入为矩阵格式。当输入是列表的时候,更改列表的值并不会影响化为矩阵的值。 2.输入为数组时 a=np.random.random(( 1.Numpy的强大之处-向量化操作; 2.NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵; 3.Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)); 4.ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快; 本文主讲PythonNumpy数组的类型、全0全1数组的生成、随机数组、数组操作、矩阵的简单运算、矩阵的数学运算。 尽管可以用pythonlist嵌套来模拟矩阵,但使用Numpy库更方便。  >>> import numpy as np >>> m = np.array([[1,2,3], [2,3,4]]) #定义矩阵,int64 array([[1, 2, 3], [2, 3, 4]]) >>> m = np.array([[1,2,3], [2,3,4]], dtype=np.float) #定义矩阵,float64 array([ 这种方法在数据较少的时候可以使用,当数据量大了之后会已知卡在那里不动。具体原因不知道为啥,以后继续探索! 2.首先将list中的元素换为numpy数组,再对整个list使用np.array() a=[特别大的一个数组] for i in range(len(a)): b.append(np.array(a[i])) c=np.arra Python的列表的功能挺多的,但是ndarray对象更强大。两个咱们都会用到,它们都可以看成是矩阵的一种形式,所以有必要了解下它们之间的互相换操作。关于ndarray对象的基础介绍,大家可以参考博文: https://blog.csdn.net/wenhao_ir/article/details/124416798关于list(列表)的详细介绍,大家可以参考博文: https://blog.csdn.net/wenhao_ir/article/details/125400072接下来,先看ndarray 注:虽然torch也有torch.Tensor(audio)的方式把list换为tensor然后再处理,但这样是从内存到GPU,很慢,官方文档说的extreamely slow, 建议先像下面的代码一样通过np.concatenate(list)换为numpy array后,再使用torch.from_numpy(array)为tensor使用。 通过可视化的方式来学习与理解Numpy中的简单概念。 文中图片出自A Visual Intro to NumPy and Data Representation 什么是NumpyNumpyPython中用于数据分析、机器学习与科学计算的知名第三方库,它是Python中很多科学计算库的依赖包,如sickit-learn、SciPy、Pandas等 Numpy中创建数组使用 np...