我想用numpy创建一个简单的一维数组。
import numpy as np
arr = np.array() # how do I initialize a float array?
np.append(arr, "3453.2")
np.append(arr, "1321.3")
np.append(arr, "2003.6")
我尝试了np.zeros()
,np.ones()
,np.empty()
等等。但我无法找到如何初始化一个空数组。
答案 0 :(得分:2)
浮点数列表中的数组:
arr = np.array([1., 2., 3.])
空数组:
arr = np.empty(shape=())
print(arr.shape) # ()
清空1d阵列:
arr = np.empty(shape(1,))
print(arr.shape) # (1,)
目前还不清楚你真正想要的是什么。
阅读the docs about array-creation。
重要提示:不要过度使用追加和合作。 /不要经常调整数组的大小!这要求因复制数据而导致性能下降!这不是应该如何使用numpy-array。
构建一个列表(其中append很快),然后在列表准备好后构建一个数组。由于原因,研究附加在列表与数组上!
像:
l = []
l.append(1.)
l.append(2.)
arr = np.array(l)
答案 1 :(得分:0)
您不应该使用空数组和append
,因为每个numpy.append
都是O(n)
操作,这使得数组创建具有O(n**2)
性能。
Pythons列表会更好,因为它们已经(摊销)O(1)
附加。
但是如果你真的想要一个空数组,你可以使用一个空列表作为np.array
的输入:
import numpy as np
arr = np.array([], dtype=float) # dtype specifies the type of the elements
如果您将空数组视为具有正确大小但尚未使用正确值的数组,则应使用np.empty
:
arr = np.empty(shape=3, dtype=float) # 3 element array
arr[0] = 3453.2
arr[1] = 1321.3
arr[2] = 2003.6