我有一个阵列。我的任务是打印出数组及其形状、大小、项大小、维度和数据类型名称。输出应该是一个文本文件-每个属性应该在一个新行上。
当我尝试使用以下代码时,会得到错误:

  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/

10-10 23:35