我试图将一个Numpy数组的元素设置为另一个Numpy数组。我不知道如何做到这一点,因为每次我尝试我得到ValueError: setting an array element with a sequence.
我知道这在Python的list
中是可能的,因为我可以将新数组追加到list中,并且它会工作。
这是我正在尝试做的一个例子:
import numpy as np
finalArray = np.zeros(3)
finalList = []
a = np.arange(128).reshape(32,4)
b = np.arange(124).reshape(31,4)
c = np.arange(120).reshape(30,4)
# This works
finalList.append(a)
finalList.append(b)
finalList.append(c)
# This doesn't work
finalArray[0] = a
finalArray[1] = b
finalArray[2] = c
字符串
有什么办法吗?
4条答案
按热度按时间wribegjk1#
Numpy数组不能用任意类型填充。它们更像C或Java的数组。要创建一个二维数组,将一个二维列表输入np.array函数。比如说,
字符串
创建一个3x3的二维数组,填充零。
zbdgwd5y2#
我想你在找
numpy.concatenate
:字符串
这将创建一个93 x 4的numpy数组:
型
ui7jx7zq3#
它会工作如果
字符串
然后
finalArray
像列表一样获取对象点。但我犹豫建议这样做,因为这个功能正在被初学者滥用或误用。
https://stackoverflow.com/a/37597524/901925-我对另一个关于数组的深度副本的问题的回答。
考虑到数组的维数,
concatenate
答案是唯一有意义的选择。concatenate
的一个变体是型
换句话说,使
finalArray
足够大以接收数组的元素并复制值。bvk5enib4#
我完全理解你的问题。使用numpy数组作为对象的存储有时会更方便。例如,matplotlib使用numpy数组来存储轴的网格,所以它本身并不是一个坏的做法,但应该稀疏地使用。
问题是它不允许将iterable设置为成员。
到目前为止,我的方法是:
字符串
要访问它,请执行以下操作:
型
让我知道,如果有一个黑客直接做它没有命名空间或独裁。;)