我有不同类型的数据.他们中的大多数是int,有时float.它的int大小不同,因此8/16/32位是大小.
对于这种情况,我正在创建一个数字型转换器.因此我通过使用检查类型isinstence().这是因为我读过的isinstance()内容不如说type().
关键是我得到的很多数据都是numpy数组.我使用spyder作为IDE,然后我看到变量也是一个类型.但是当我输入isinstance(var,'type i read')我的时候False.
我做了一些检查:
a = 2.17
b = 3
c = np.array(np.random.rand(2, 8))
d = np.array([1])
Run Code Online (Sandbox Code Playgroud)
因为isinstance(var,type)我得到:
isinstance(a, float)
True
isinstance(b, int)
True
isinstance(c, float) # or isinstance(c, np.float64)
False
isinstance(d, int) # or isinstance(c, np.int32)
False
Run Code Online (Sandbox Code Playgroud)
c并且d是真实的,当我问
isinstance(c, np.ndarray)
True
isinstance(d, np.ndarray)
True
Run Code Online (Sandbox Code Playgroud)
我可以与在步骤检查ndarray由
isinstance(c[i][j], np.float64)
True
isinstance(d[i], np.int32)
True
Run Code Online (Sandbox Code Playgroud)
但这意味着,对于每个维度,我必须添加一个新索引,否则它将False再次出现.我可以检查有型有 …
我基本上有以下脚本.但它在运行时遇到以下错误TypeError: 'Figure' object does not support indexing
就失败了axarr[0].plot(x,y).我试着搜索一下但发现了与创建子图有类似的错误...而且我只添加/替换数据(我不确定,因为它是matlab文件的副本,而我没有matlab).
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 2, 0.01)
for idx in range(1, 10):
a = 1 + (idx - 1) / 10
y = a ** x
axarr, fig = plt.subplots(1,1)
axarr[0].plot(x,y)
axarr.axis([0, 4, 0, 85])
axarr[0].grid(True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
可能我得到这个错误,因为我在一个循环中使用一个数字,但它看起来它在迭代1失败都准备好了.那么我错了什么或者什么可以更好以便这个工作(几乎等于matlab文件,请参阅下面的部分脚本)?
我希望有人可以提供帮助.
matlab文件相同的样本是这样的:
x = 0:0.01:4;
for idx = 1:10
a = 1 + (idx-1)/10;
y = a.^x;
z = 2 * y
subplot(111)
plot(x,y)
hold …Run Code Online (Sandbox Code Playgroud) 我有一个关于使用 matplotlib 的子图每行共享 y 轴的问题。我有以下脚本作为示例。sharey=True当我在子图函数中使用作为参数时,ax[x, x].set_ylim(n, n)然后它使用我使用的最后一个参数。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 2, figsize=(8, 10), sharey=True, gridspec_kw={'height_ratios': [1, 2, 2]})
ax[0, 0].set_ylim(-1.5, 1.5)
ax[1, 0].set_ylim(-40, 40)
ax[1, 1].set_ylim(-40, 40)
ax[2, 0].set_ylim(-40, 40)
ax[2, 1].set_ylim(-40, 40)
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以让我每行共享 y 轴?
我有一个带有一些图的脚本(参见示例代码).在其他一些事情之后,我想为现有的一个添加一个新的情节.但是,当我尝试它添加最后创建的数字(现在图2)的情节.我无法弄清楚如何改变......
import matplotlib.pylab as plt
import numpy as np
n = 10
x1 = np.arange(n)
y1 = np.arange(n)
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(x1,y1)
fig1.show()
x2 = np.arange(10)
y2 = n/x2
# add new data and create new figure
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(x2,y2)
fig2.show()
# do something with data to compare with new data
y1_geq = y1 >= y2
y1_a = y1**2
ax1.plot(y1_geq.nonzero()[0],y1[y1_geq],'ro')
fig1.canvas.draw
Run Code Online (Sandbox Code Playgroud)