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在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快;
本文主讲Python中Numpy数组的类型、全0全1数组的生成、随机数组、数组操作、矩阵的简单运算、矩阵的数学运算。
尽管可以用python中list嵌套来模拟矩阵,但使用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
什么是Numpy?
Numpy是Python中用于数据分析、机器学习与科学计算的知名第三方库,它是Python中很多科学计算库的依赖包,如sickit-learn、SciPy、Pandas等
Numpy中创建数组使用 np...