有没有办法指定numpy.gradient的数据类型?你知道吗
我使用了一个子数组,它抛出了以下错误:
ValueError: setting an array element with a sequence.
举个例子:
import numpy as np
a = np.empty([3, 3], dtype=object)
it = np.nditer(a, flags=['multi_index', 'refs_ok'])
while not it.finished:
i = it.multi_index[0]
j = it.multi_index[1]
a[it.multi_index] = np.array([i, j])
it.iternext()
print(a)
哪些输出
[[array([0, 0]) array([0, 1]) array([0, 2])]
[array([1, 0]) array([1, 1]) array([1, 2])]
[array([2, 0]) array([2, 1]) array([2, 2])]]
我想print(np.gradient(a))
回来
array(
[[array([[1, 0],[0, 1]]), array([[1, 0], [0, 1]]), array([[1, 0], [0, 1]])],
[array([[1, 0], [0, 1]]), array([[1, 0], [0, 1]]), array([[1, 0],[0, 1]])],
[array([[1, 0], [0, 1]]), array([[1, 0], [0, 1]]), array([[1, 0],[0, 1]])]],
dtype=object)
注意,在这种情况下,向量场的梯度是恒等张量场。你知道吗
为什么要使用
dtype
对象数组?这比使用二维数组要费劲。你知道吗例如
或者一列一列地工作,或者一行一行地工作
dtype=object
仅当子数组/列表的类型和/或形状不同时才有意义。即使这样,它也不会给常规的Python列表添加太多内容。你知道吗====================================
我可以拿你的2d
a
,用以下内容制作一个3d数组:或者我可以用
meshgrid
产生同样的结果:当我对它应用
np.gradient
时,我得到3个数组,每个数组(3,3,2)的形状。你知道吗看起来前两个数组有您想要的值,所以只需要重新排列它们。你知道吗
如果它们必须返回(3,3)对象数组,我可以:
我仍然想知道使用对象数组有什么意义。你知道吗
相关问题 更多 >
编程相关推荐