[英]How to print array data that I just compressed using numpy zip()
我试图弄清楚如何从压缩的内容中查看数据。 该方案在代码中如下所示:
import numpy as np
x=[1,2,3]
y=[4,5,6]
z=[7,8,9]
data=np.array(zip(x,y,z))
print (data)
产量
array(<zip object at 0x00000166568AE648>, dtype=object)
但我想查看zip内的数据,所以当我说
print(data)
表明
<zip object at 0x00000166568AE648>
现在人们在关于D_stacking的类似帖子中进行讨论。
np.dstack(data)
但它显示输出为错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-20-2126862e2c70> in <module>()
----> 1 np.dstack(data)
C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\shape_base.py in dstack(tup)
407
408 """
--> 409 return _nx.concatenate([atleast_3d(_m) for _m in tup], 2)
410
411 def _replace_zero_by_x_arrays(sub_arys):
TypeError: iteration over a 0-d array
0维..? 这是什么意思..? 对于其他我找到的解压缩zip来说,它说的也一样
a,b,c=zip(*data)
print('x=',a)
print('y=',b)
print('z=',c)
错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-41-6ad67a911952> in <module>()
----> 1 a,b,c=zip(*data)
2 print('x=',a)
3 print('y=',b)
4 print('z=',c)
TypeError: iteration over a 0-d array
然后我去了programiz.com的zip()
函数,在那里我找到了set()
函数。
result = set(data)
print (result)
错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-39-2e1af52686b4> in <module>()
----> 1 result = set(data)
2 print (result)
TypeError: iteration over a 0-d array
我相信我在基本的x,y,z数据上做得不好。.但我的知识仅限于您对我的看法。
您能帮我解决我所缺少的事情吗,并解释我错过的重要一点。
当我搜索TypeError: iteration over a 0-d array
人们谈论json
,除了FC3之外,我还有0个想法,对不起。
列表元组的zip
是列表转置的一种:
In [83]: x=[1,2,3]
...: y=[4,5,6]
...: z=[7,8,9]
...:
In [84]: zip(x,y,z)
Out[84]: <zip at 0xaf79f84c>
但是在Py3中, zip
就像生成器一样; 您必须将结果包装在list
(或对其进行迭代)以获取列表:
In [85]: list(zip(x,y,z))
Out[85]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
到目前为止,我还没有使用numpy
,而只是使用普通的Python。 zip
文档: https : //docs.python.org/3/library/functions.html#zip
您可以从这样的列表中创建一个数组
In [86]: np.array(list(zip(x,y,z)))
Out[86]:
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
尝试从zip
生成数组会生成一个单元素数组0d,其中包含指向该zip object
的指针。 这样做毫无意义。
In [87]: np.array(zip(x,y,z))
Out[87]: array(<zip object at 0xaf75d8cc>, dtype=object)
但是,要从这些列表中获取2d矩阵,则使用某种版本的concatenate
会更容易(至少是更直接),该版本需要一个数组或列表的列表。 例如, stack
允许您指定一个新的轴来连接事物:
In [88]: np.stack((x,y,z)) # same as np.array((x,y,z))
Out[88]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [89]: np.stack((x,y,z),axis=1)
Out[89]:
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
zip的常见用法是一次迭代几个列表:
In [92]: for i,j,k in zip(x,y,z):
...: print(i,j,k,i+j+k)
...:
1 4 7 12
2 5 8 15
3 6 9 18
从注释中,您似乎专注于从此数组中获取值:
In [97]: data = np.array(zip(x,y,z))
In [98]: data
Out[98]: array(<zip object at 0xabee412c>, dtype=object)
您可以使用[()]
索引从0d数组中提取项目。 data.item()
也可以:
In [99]: data[()]
Out[99]: <zip at 0xabee412c>
现在,您可以应用列表并查看项目:
In [100]: list(data[()])
Out[100]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
zip
实际上并不包含其参数。 而是引用了原始列表。 data
数组也是如此。
您需要压缩数据吗? 您可以向NumPy传递列表列表,例如:
import numpy as np
x=[1,2,3]
y=[4,5,6]
z=[7,8,9]
data=np.array([x,y,z])
print (data)
输出:
[[1 2 3]
[4 5 6]
[7 8 9]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.