我有一个阵列。我的任务是打印出数组及其形状、大小、项大小、维度和数据类型名称。输出应该是一个文本文件-每个属性应该在一个新行上。
当我尝试使用以下代码时,会得到错误:
File "<ipython-input-76-f4d4f45285be>", line 1, in <module>
print(a.shape)
AttributeError: 'NoneType' object has no attribute 'shape'
我尝试了两个选项,打开文本文件和
np.savetxt
。两者都不起作用。代码如下:
import numpy as np
a = np.arange(15).reshape(3,5)
a = print(a)
shape = print(a.shape)
size = print(a.size)
itemsize = print(a.itemsize)
ndim = print(a.ndim)
dtype = print(type(a.dtype))
with open("demo_numpy.tx","w") as text:
text.write(a,shape,size,itemsize,ndim,dtype, file = text)
np.savetxt('demo_numpy.txt',[a,shape,size,itemsize,ndim,dtype])
我做错了什么,我怎样才能修正我的输出?
最佳答案
print
只打印传入stdout
的值并返回None
。如果您想访问某个属性,只需在不print
的情况下进行:
import numpy as np
a = np.arange(15).reshape(3,5)
shape = a.shape
size = a.size
itemsize = a.itemsize
ndim = a.ndim
dtype = a.dtype
如果您想
print
不要分配print
的返回值:print(a)
print(a.shape)
print(a.size)
print(a.itemsize)
print(a.ndim)
print(a.dtype)
注意,您没有正确地写入文件,在第一种情况下,您一次只能写入一个参数,您需要对它们执行
str.join
操作或执行多个text.write
操作。在第二种情况下,您应该检查numpy.savetxt
的文档-它需要一个数组作为第二个参数,而不是一个包含多个属性的列表。例如:
with open("demo_numpy.tx","w") as text:
text.write(str(a))
text.write(str(shape))
text.write(str(size))
text.write(str(itemsize))
text.write(str(ndim))
text.write(str(dtype))
# or:
# text.write('\n'.join(map(str, [a,shape,size,itemsize,ndim,dtype])))
np.savetxt('demo_numpy.txt', a)
关于python - 将内容和numpy数组的多个属性打印到文本文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45119400/